Hibernate 5删除了在其拦截器中检测回滚的功能.相反,可以捕获该事务被回滚并在未提交时推断回滚.
例如:
public class MyInterceptor extends EmptyInterceptor {
.
.
.
private static ThreadLocal wasCommited = new ThreadLocal();
@Override
public void beforeTransactionCompletion(Transaction tx) {
// not called for rollback
wasCommited.set(Boolean.TRUE);
}
@Override
public void afterTransactionCompletion(Transaction tx) {
if ( !Boolean.TRUE.equals(wasCommited.get()) ) {
try {
// handle transaction rolled back
}
finally {
wasCommited.set(null);
}
}
}
}