67,513
社区成员
发帖
与我相关
我的任务
分享
public void save(final User user) {
if (user == null) {
throw new NullPointerException("user");
}
try {
getTransactionTemplate().execute(new TransactionCallback<Object>() {
@Override
public Object doInTransaction(TransactionStatus tx) {
try {
getHibernateTemplate().save(user);
} catch (Exception e) {
// 代码不会执行到这里
// save不抛异常
log.error("保存User失败", e);
tx.setRollbackOnly();
}
return null;
}
});
} catch (Exception e) {
// 代码会执行这到里,是在PlatformTransactionManager.commit()方法抛出的异常
// 这是正常的行为吗?
// 在这里捕获异常的话,不能回滚.
log.error("保存User失败", e);
throw new RuntimeException(e);
}
}