>> save"); schedule = em.merge-6ren">
gpt4 book ai didi

java - Seam/Hibernate - 获取 ORA 消息文本

转载 作者:行者123 更新时间:2023-11-30 05:07:41 24 4
gpt4 key购买 nike

    try {
if (schId != null) {
log.info(">>> save");
schedule = em.merge(schedule);

em.persist(schedule);
} else {
em.persist(schedule);
}

em.flush();
ret = "ok";
} catch (Exception err) {
ret = err.getMessage();
err.printStackTrace();

facesMessages.addFromResourceBundle(Severity.ERROR, "databaseError", ret);
}

当我出现重复键错误时,err.getMessage() 返回org.hibernate.exception.ConstraintViolationException:无法执行 JDBC 批处理

在堆栈跟踪中也存在此错误:java.sql.BatchUpdateException:ORA-00001:违反唯一约束(ACM.SCH_UK)

如何以字符串形式获取此 ORA-00001 消息,而不是 org.hibernate.exception.ConstraintViolationException 文本?

最佳答案

java.sql.BatchUpdateException 是导致 PersistenceException 的根本原因,您可以按如下方式提取它:

public static Throwable getRootCause(Throwable ex) {
while (true) {
Throwable cause = ex.getCause();
if (cause == null) return ex;
ex = cause;
}
}

.

ret = getRootCause(ex).getMessage();

关于java - Seam/Hibernate - 获取 ORA 消息文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4546056/

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