恳请指点!
简单的hibernate事务往数据库存数据,但是save()后(事务未commit之前)数据库就已经有数据,出现异常后事务也不回滚,mysql数据库,数据库事务隔离级别默认:不可重复读
保存User方法 @Override
public void addUser(User user) {
Session session = null;
Transaction trans = null;
try {
session = HibernateUtil.getSessionFactory().getCurrentSession();
trans = session.beginTransaction();
//保存用户
session.save(user);
//制造异常
System.out.println(1/0);
//记录日志
LogMgr logMgr = new LogMgrImpl();
Log log = new Log();
log.setOperationTime(new Date());
log.setDetail("保存用户");
log.setUserName(user.getName());
logMgr.addLog(log);
trans.commit();
} catch (Exception e) {
e.printStackTrace();
trans.rollback();
// TODO: handle exception
}
}保存Log方法
@Override
public void addLog(Log log) {
HibernateUtil.getSessionFactory().getCurrentSession().save(log);
}hibernate配置文件<session-factory>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost/SSH2?characterEncoding=UTF-8
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">admin</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property> <property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.current_session_context_class">thread</property>
<mapping resource="com/spg/bean/User.hbm.xml" />
<mapping resource="com/spg/bean/Log.hbm.xml" /> </session-factory>运行时手动制造的异常会抛出,rollback()也会执行,但是事务却没回滚。
恳请指点!
简单的hibernate事务往数据库存数据,但是save()后(事务未commit之前)数据库就已经有数据,出现异常后事务也不回滚,mysql数据库,数据库事务隔离级别默认:不可重复读
保存User方法 @Override
public void addUser(User user) {
Session session = null;
Transaction trans = null;
try {
session = HibernateUtil.getSessionFactory().getCurrentSession();
trans = session.beginTransaction();
//保存用户
session.save(user);
//制造异常
System.out.println(1/0);
//记录日志
LogMgr logMgr = new LogMgrImpl();
Log log = new Log();
log.setOperationTime(new Date());
log.setDetail("保存用户");
log.setUserName(user.getName());
logMgr.addLog(log);
trans.commit();
} catch (Exception e) {
e.printStackTrace();
trans.rollback();
// TODO: handle exception
}
}保存Log方法
@Override
public void addLog(Log log) {
HibernateUtil.getSessionFactory().getCurrentSession().save(log);
}hibernate配置文件<session-factory>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost/SSH2?characterEncoding=UTF-8
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">admin</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property> <property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.current_session_context_class">thread</property>
<mapping resource="com/spg/bean/User.hbm.xml" />
<mapping resource="com/spg/bean/Log.hbm.xml" /> </session-factory>运行时手动制造的异常会抛出,rollback()也会执行,但是事务却没回滚。
恳请指点!
解决方案 »
- struts1参数传递问题
- java调用串口?
- MyEclipse中如何用IE或者其他浏览器打开JSP?
- 急救!请问如何通过SUN的jdbcodbc桥来连接sql2000和sql2005数据库啊,能否写在main函数中能运行的例子啊
- 先怎么执行alert提示框再跳转到指定页面
- java 解决批量上传问题
- 请问我在web.xml文件中这样加入filter 对不对?
- 救命阿~忙活一下午了
- 怎样屏避网站的页面的名称 例如www.sina.com.cn 而不是显示www.sina.com.cn/index.html
- bean的问题!
- java实现从远程tomcat服务器下载文件到本地
- 有谁用过SPC的?在web系统中怎么和SPC结合
http://www.micmiu.com/j2ee/spring/spring-transaction-mysql/
楼主加上finally {session.close();}
试一下,session关闭一下。
不过问题解决了,就是2楼这位哥们儿的答案