一.昨天看hibernate时候写了一个小demo,一个junit,等着出现绿色的时候却出现了红色,这是什么情况,仔细一看出现了一个这样的错误:caused by:java.sql.SQLException:could not retrieve transation read-o ...
一.昨天看hibernate时候写了一个小demo,一个junit,等着出现绿色的时候却出现了红色,这是什么情况,仔细一看出现了一个这样的错误:
caused by:java.sql.SQLException:could not retrieve transation read-only status server
Caused by: java.sql.SQLException: Unknown system variable 'tx_read_only'
一看是只有只读服务还以为配置出错了,赶紧看配置文件,但是都没什么问题,但是一直就是这样的错误,不知道怎么办的情况下去找度娘聊聊,
度娘这样说的,可能是连接数据库的驱动包的版本问题,刚好电脑上有好几个版本的驱动包,就换了一个试试,然后就成功的出现了其他问题,等下再说,至少没有出现上面的问题了,
因为是用手机上网查的,所以就没有看那么多,今天继续查了一下,其他人也有遇到这样问题的,也有其他的办法,转载一个看看,如下:
转自:http://blog.csdn.net/haohaohao000111/article/details/9242539
文章太长,主要方法有:
1>把mysql的数据库方言由 org.hibernate.dialect.MySQLDialect 改成 org.hibernate.dialect.MySQL5InnoDBDialect
2>hibernate指定数据库编码:
- <property name="connection.url">jdbc:mysql://127.0.0.1:3306/test</property>
- 或者
- <property name="connection.characterEncoding">UTF8</property>
private SessionFactory
sessionFactory=SessionFactoryUtil.getSessionFactory(); @After @Test}如上的代码可以运行正确,主要问题就出在 session.getTransaction().begin();这里,如果换成
//private Transaction tx;
tx.beginTransaction();
tx.commit();
也可以运行正常,但是,如果换成session.beginTransaction(),其他不变就出现重复开启事务的异常。
session.beginTransaction()是开启事务,其他地方也没有开始事务啊,session.getTransaction().commit();是提交事务。
这两个没有搞明白,session.beginTransaction()和session.getTransaction()一个是直接开启事务,一个是获得事务,没什么冲突的啊?
有没有大神解释下?以后写的时候就直接加上Transaction tx,这样就不会出错了吧。
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:hibernate学习笔记(二)
关键词:Hibernate
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。