【问题标题】:Does Spring handle Hibernate NonUniqueObjectException?Spring 是否处理 Hibernate NonUniqueObjectException?
【发布时间】:2016-04-20 14:47:49
【问题描述】:

我正在使用 Spring MVC 编写一个带有数据库后端的 RESTful Web 服务。我的保存例程包含在 try/catch ...

private void saveData() {
   try {
      service.saveReport(xmlData);
   }
   catch(DataAccessException e) {  // Spring's DataAccessException
      throw new MyException();
   }
}

这适用于数据库错误,例如违反唯一约束。

但由于我的代码中的错误,我目前正在收到 Hibernate 的 NonUniqueObjectException。

但是我很好奇,为什么 Spring 的 DataAccessException 没有“捕获” NonUniqueObjectException?我应该使用另一个 Spring 异常(除了 DataAccessException)来“捕获”这个 Hibernate 异常吗?

或者我当然可以自己捕获 Hibernate 异常。但我不知道 Spring 是否会/可以。

更新 -------- 我的 service.save(xmlData) 实际上不仅仅是“保存”,而是首先进行一些处理,将 XML 数据复制到正确的(列表)@Entity bean,然后循环遍历 Entity bean,保存每个。 Hibernate 异常发生在设置实体 bean 本身期间,而不是在实际 dao.save(entityBean) 期间。

谢谢! 克里斯

【问题讨论】:

    标签: java spring hibernate spring-mvc


    【解决方案1】:

    您的 DAO 需要被代理以允许 Spring 自动异常转换。将 @Repository 注释添加到您的 DAO 或显式配置 PersistenceExceptionTranslationPostProcessor bean 后处理器到您的配置

    【讨论】:

    • 他们已经是了。 Service 类用@Service 和@Transactional 标记,DAO 类用@Repository 标记。
    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2021-01-08
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多