@Transactional回滚异常

roronoa_i_zoro 2017-09-27 06:41:39
今天调试的时候出了个问题,搜了半天没有找到解决方案:
代码如下:
try {
GameRecord newRecord = new GameRecord(phaseCode, clientComParam.getUserId());
gameRecordDao.save(newRecord);
logger.info("Check QR Code successfully");
} catch (Exception e) {
if(e.getClass().equals(DataIntegrityViolationException.class)){
serverComParam.setContentCode(ResponseCode.CONT_DUPLICATE_PHASE_CODE.getCode());
serverComParam.setContentDesc(ResponseCode.CONT_DUPLICATE_PHASE_CODE.getErrorMsg());
logger.warn("/checkQRCode, [Error]: Phase duplicated.");
return JSON.toJSONString(serverComParam);
}else {
throw e;
}
}

按照我的理解,方法中的异常如果被try catch到了,并且没有重新作为runtimeException被抛出,事物就检测不到这个异常所以也不会回滚?但是debug的时候运行到加粗的return语句就报错说:
Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly,...

各位大佬。。这是什么原因?return语句会影响transaction检查异常吗
...全文
104 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧