Java 如何停用Spring数据异常转换

Java 如何停用Spring数据异常转换,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,新的org.springframework.orm.hibernate5.HibernateExceptionTranslator使用了一个故障诊断,即它首先尝试使用香草Hibernate(SessionFactoryUtils)映射异常。如果无法进行翻译,它将通过EntityManagerFactoryUtils.convertJPAAccessExceptionIfBlability()尝试JPA 后者困扰着我们,因为它正在将IllegalStateException转换为InvalidDa

新的
org.springframework.orm.hibernate5.HibernateExceptionTranslator
使用了一个故障诊断,即它首先尝试使用香草Hibernate(
SessionFactoryUtils
)映射异常。如果无法进行翻译,它将通过
EntityManagerFactoryUtils.convertJPAAccessExceptionIfBlability()
尝试JPA

后者困扰着我们,因为它正在将
IllegalStateException
转换为
InvalidDataAccessApiUsageException
。我不太清楚为什么
IllegalStateException
IllegalArgumentException
会得到这种特殊待遇,但没问题。因此,现在我们突然得到了以前没有翻译过的已翻译异常。由于这些额外的翻译是在JPA的上下文中进行的(因为它被称为
convertJPAAccessException如果可能的话
),这也没有任何意义,因为我们使用的不是JPA而是香草Hibernate

那么,什么是确保只翻译Hibernate异常的正确方法呢?Afaic的
HibernateExceptionTranslator
没有关闭JPA翻译的选项,
LocalSessionFactoryBean
扩展
HibernateExceptionTranslator
而没有注入另一个实现的选项。让
hibernateeexceptiontranslator
JPA不知道,并在实际使用JPA的情况下添加另一个转换器,不是更有意义吗?

来自Spring数据:

使用此元素查找Spring数据存储库,如中所述 创建存储库实例。除此之外,它还激活了持久性 使用@Repository注释的所有bean的异常转换 无法转换JPA持久性提供程序引发的异常 进入Spring的DataAccessException层次结构

省略@Repository注释,则不会翻译普通的Hibernate异常。

请参阅以获取适当的答案