hibernate - 在 SLSB 中使用 EJB3 和实体管理器处理 ConstraintViolationException 的最佳方法是什么

标签 hibernate jpa jboss ejb-3.0

这是我的代码片段:

@Stateless
public class mySLSB {

@PersistenceContext(unitName = "db")
private EntityManager myEntityManager;

 public void crud(MyEntity myEntity) throws MyException {
  myEntityManager.merge(myEntity);
 }
}

但是,此合并会导致 ConstraintViolationException,它不会抛出 MyException(在调用 servlet 中捕获)。

捕获 hibernate 异常的最佳方法是什么?

最佳答案

However this merge can cause a ConstraintViolationException, which does not throw MyException (which is caught in the calling servlet). What is the best way to catch hibernate exceptions?

当使用 JPA 和 EntityManager API 时,您将得到一个 javax.persistence.RollbackException 并以 ConstraintViolationException 为原因。所以捕获 RollbackException 并使用 getCause() 来检查它。

关于hibernate - 在 SLSB 中使用 EJB3 和实体管理器处理 ConstraintViolationException 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4053931/

相关文章:

java - 保存时 hibernate 超时

java - Spring MVC 3.2 : NoClassDefFoundError: java/util/Deque

jboss - 配置 JBoss JNDI 以绑定(bind)到不同服务器上的 JNDI?

java - 在 Spring 应用程序中配置 Hibernate

spring - 防止 hibernate StaleObjectStateException 发生

java - Hibernate 很难使用 MySQL 创建表

java - 使用 Maven + intelliJ + Tomcat 7 + JPA2 的 EntityManager 上出现 NullpointerException

java - Hibernate : Why FetchType. LAZY-annotated 集合属性急切加载?

java - 是否有必要从 getter 方法返回一个与 Hibernate 传递给 setter 的对象不同的对象?

security - JBoss AS 7 安全 : how to get currently logged username?