抛出应用程序异常时,Hibernate saveAndFlush不会持久化

时间:2016-11-07 10:50:56

标签: java hibernate spring-data-jpa

我希望有人遇到过这个问题:

在服务层我捕获异常,在catch块中我想在数据库中保存一条记录,调用saveAndFlush然后抛出应用程序异常。问题是save和flush不会保留记录,并且事务似乎会回滚。

代码是这样的:

catch(SomeException e) {
   repoClass.saveAndFlush(entity);
   throw new ApplicationException();
}

有什么想法吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

因为如果代码抛出任何RuntimeExceptionApplicationExceptionRuntimeException因此saveAndFlush无法正常工作(事务回滚),Spring将回滚事务。

在您的情况下,您必须抛出UserDefinedException而不是RuntimeException

样品

public class UserDefinedException extends Exception {

}