Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring异常转换不是';FW从2.5升级到4.2后,t工作_Java_Spring_Jpa_Exception Handling - Fatal编程技术网

Java Spring异常转换不是';FW从2.5升级到4.2后,t工作

Java Spring异常转换不是';FW从2.5升级到4.2后,t工作,java,spring,jpa,exception-handling,Java,Spring,Jpa,Exception Handling,我正在维护一个传统的SpringFW2.5应用程序。最近我试着把它移到SpringFW4.2。我不能真正带回的一点是spring例外翻译。具体情况如下(简化代码): 就在迁移之后,try块似乎抛出了javax.persistence.NoResultException(因为底层技术是JPA),而不像以前那样抛出了org.springframework.dao.EmptyResultDataAccessException。我无法让Spring翻译这个特殊的异常。我用@Repository注释了这个

我正在维护一个传统的SpringFW2.5应用程序。最近我试着把它移到SpringFW4.2。我不能真正带回的一点是spring例外翻译。具体情况如下(简化代码):

就在迁移之后,try块似乎抛出了
javax.persistence.NoResultException
(因为底层技术是JPA),而不像以前那样抛出了
org.springframework.dao.EmptyResultDataAccessException
。我无法让Spring翻译这个特殊的异常。我用
@Repository
注释了这个特定的dao,启用了XML中的
组件扫描
,以及
PersistenceExceptionTranslationPostProcessor
。我可能还遗漏了什么

该应用程序非常复杂,包含许多组件,因此发布配置(几个XML文件)可能只会引起混乱。如果有人能告诉我如何为这个特定区域生成spring日志调试消息,那就太好了。我可能会自己解决这个问题,或者至少提供更多细节

编辑:DAO用
@Transactional(readOnly=true)
注释,这会导致
exists()
方法在事务中运行。这可能是相关的,因为我认为由于声明性事务,异常转换很可能在Spring2.5中起作用。所有
@Repository
组件扫描
PersistenceExceptionTranslationPostProcessor
的内容都是在迁移到4.2之后添加的,目的是恢复异常转换

public boolean exists() {
  try {
    Query q = em.createNativeQuery();
    q.getSingleResult();
    return true;
  } catch(EmptyResultDataAccessException ex) {
    return false;
  } catch(Exception e) {
    throw new CustomCheckedException(e);
  }
}