你的位置:首页 > 软件开发 > Java > hibernate学习笔记(二)

hibernate学习笔记(二)

发布时间:2015-04-10 16:00:23
一.昨天看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指定数据库编码:

 

  1. <property name="connection.url">jdbc:mysql://127.0.0.1:3306/test</property>    
  2. 或者      
  3. <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 (#换成@)。

可能感兴趣文章

我的浏览记录