我使用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)期间。
谢谢! 克里斯
答案 0 :(得分:0)
您的DAO需要代理以允许Spring自动异常转换。将@Repository注释添加到DAO中或明确地将PersistenceExceptionTranslationPostProcessor bean后处理器配置为您的配置