gpt4 book ai didi

java - 在 JPA 中,如何知道持久性异常是否是由特定数据库触发器引起的?

转载 作者:行者123 更新时间:2023-12-02 05:34:41 25 4
gpt4 key购买 nike

假设我有两个触发器,并且都在数据库中引发两个不同的错误。当我尝试插入新实体并捕获持久性异常时,如何区分这两个错误?我的意思是这样的:

try {

entityManager.getTransaction().begin();

entityManager.persist(entity);

entityManager.getTransaction().commit();

} catch (EntityExistsException exception) {

//...

} catch (PersistenceException exception) {

if(ERROR_FROM_TRIGGER_ONE) {
//do something about it
} else if(ERROR_FROM_TRIGGER_TWO) {
//do something about it
}
}

最佳答案

JPA 使用 JDBC API 作为低级别,从 jdbc 驱动程序的角度来看,不正确的查询语法错误或损坏的触发器之间没有区别。所以一般情况下你不能实现这样的检查。

但是一些数据库供应商(例如Oracle)在发生异常时在消息中提供唯一的错误号,可以用来识别真正的问题,例如触发器损坏。

关于java - 在 JPA 中,如何知道持久性异常是否是由特定数据库触发器引起的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25122088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com