我有一个注入 EntityManager em 的托管无状态会话 bean。
我想要做的是拥有一个具有唯一列的数据库表。然后我运行一些试图插入实体的算法。但是,如果实体存在,它将更新它或跳过它。
我想要这样的东西:
try {
em.persist(cd);
em.flush();
} catch (PersistenceException e) {
// Check if the exception is DatabaseException and ConstraintViolation
// Update instead or skip it
}
问题是我只能抓到PersistenceException
. DatabaseException
没有被抓住。很遗憾,因为只有一个DatabaseException
名为getDatabaseErrorCode()
我想用来检查重复条目的方法。我不明白,因为PersistenceException.getCause()
退货DatabaseException
。
所以我的问题是:如何捕获DatabaseException
和检查 MySQL 错误代码?
感谢您对此提出任何想法和经验。