Java Seam中事务提交时捕获异常

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

每次用户单击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 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类以进行进一步定制。看

多谢各位。我怎么会错过呢