我希望有人遇到过这个问题:
在服务层我捕获异常,在catch块中我想在数据库中保存一条记录,调用saveAndFlush
然后抛出应用程序异常。问题是save和flush不会保留记录,并且事务似乎会回滚。
代码是这样的:
catch(SomeException e) {
repoClass.saveAndFlush(entity);
throw new ApplicationException();
}
有什么想法吗?
非常感谢。
答案 0 :(得分:2)
因为如果代码抛出任何RuntimeException
,ApplicationException
是RuntimeException
因此saveAndFlush
无法正常工作(事务回滚),Spring将回滚事务。
在您的情况下,您必须抛出UserDefinedException
而不是RuntimeException
样品
public class UserDefinedException extends Exception {
}