Spring是否处理Hibernate NonUniqueObjectException?

时间:2016-04-20 14:47:50

标签: java spring hibernate spring-mvc

我使用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" catch" NonUniqueObjectException?是否有另一个Spring异常,我应该使用(除了DataAccessException)以及#34; catch"这个Hibernate异常?

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

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

谢谢! 克里斯

1 个答案:

答案 0 :(得分:0)

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