代码如下所示:
getReference接口当实体不存在时会抛出EntityNotFoundException异常,在下面的上层调用会捕获,但是调用会抛出Could not commit JPA transaction RollbackException: Transaction marked as rollbackOnly的异常。
原因:在一个transactional中如果有另一transaction发生了异常,即使你捕捉了这个异常,那么Transaction也会被定义成RollbackOnly,这也正是事务管理的原则,当系统检测到RollbackOnly位true时就会抛出该异常。补救:修改为sql语句即可: