遇到异常时提交的Hibernate事务

时间:2017-05-10 04:53:34

标签: java mysql spring hibernate transactions

我创建了一个服务层,我的方法在其中以下列方式对其进行了事务性注释:

@Transactional
void a() {
     User user = new User(1, "Abc", "Delhi");
     userDao.save(user);

     A a = null;
     a.toString(); //null pointer exception being encountered here.
}

事务应该已经回滚,并且用户的详细信息不应该持久保存到数据库,但是没有发生。

1 个答案:

答案 0 :(得分:0)

运行时异常将默认回滚事务。我并不完全知道hibernate,但是在JPA的eclipse链接实现中,我们可以为应用程序异常指定rollback = true / false,如下所示。

@ApplicationException(inherited = true,rollback = true)

尝试类似的配置更改。

你也可以在catch块中回滚,如下所示

catch(例外e){

entityManger.getTransaction().rollback();

}