我有道层:
@Transactional
public class DatabaseCollectionDao implements IDatabaseCollectionDao {
@PersistenceContext
private EntityManager entityManager;
@Override
public void create(Collection collection) {
entityManager.persist(collection);
}
}
它正常工作,但是:
我正在尝试在创建方法中尝试/捕获:
@Override
public void create(Collection collection) {
try{
entityManager.persist(collection);
} catch (SQLIntegrityConstraintViolationException e){
//do smth
}
}
但是Intellij表示从不抛出。
当我尝试尝试/捕获 Exception 时,我遇到了 UnexpectedRollbackException 。
如何使用JPA实体管理器处理异常?
更新:尝试删除@Transactional没有任何作用
P.S。可以肯定的是,我试图在更高的层次上尝试/捕捉它。我不知道我可以尝试解决什么。
答案 0 :(得分:1)
create customException处理程序扩展ResponseEntityExceptionHandler。 @ExceptionHandler(ConstraintViolationException :: class)有趣的handleConstraintViolation(例如:ConstraintViolationException,请求:WebRequest):ResponseEntity {}您可以轻松将Kotlin片段转换为Java –