Java Seam中事务提交时捕获异常
每次用户单击delete按钮删除某些内容时,我都会调用Java Seam中事务提交时捕获异常,java,jpa,seam,Java,Jpa,Seam,每次用户单击delete按钮删除某些内容时,我都会调用 em.remove(entity) 如果这个实体仍然有引用约束,我会看到一个PersistenceException被抛出,我可以捕捉到它来通知用户 然而,这只是我在代码中看到的关系。例如: A has an OneToMany relationship to B Table A has a foreign key to Table B. But in code, there is no XtoX relationship betwee
em.remove(entity)
如果这个实体仍然有引用约束,我会看到一个PersistenceException被抛出,我可以捕捉到它来通知用户
然而,这只是我在代码中看到的关系。例如:
A has an OneToMany relationship to B
Table A has a foreign key to Table B. But in code, there is no XtoX relationship between them
public void insert(Group group) {
try {
em.persist(group);
em.flush();
} catch (PersistenceException pe) {
}
}
在一些特殊情况下,这种关系不会反映在代码中。例如:
A has an OneToMany relationship to B
Table A has a foreign key to Table B. But in code, there is no XtoX relationship between them
public void insert(Group group) {
try {
em.persist(group);
em.flush();
} catch (PersistenceException pe) {
}
}
在这些情况下,我无法捕获上面提到的PersistenceException,这使得异常在屏幕上看起来非常丑陋
我认为异常出现在事务提交时
还有捕获它的方法吗?在JPA中,可以使用em.flush()
方法捕获异常。完成此操作后,如果出现问题,将获得异常
例如:
A has an OneToMany relationship to B
Table A has a foreign key to Table B. But in code, there is no XtoX relationship between them
public void insert(Group group) {
try {
em.persist(group);
em.flush();
} catch (PersistenceException pe) {
}
}
我会考虑使用SeaS(2。x)异常处理工具,让您处理未处理的异常(例如打印错误消息和/或重新指向错误页),而不可能为此目的耦合持久性相关逻辑。这仍然可以为您提供更多的错误处理实现方法,即使您仍然希望刷新持久性上下文。看见根据应用程序的需要,可以扩展Seam ExceptionHandler类以进行进一步定制。看
多谢各位。我怎么会错过呢