새로운 org.springframework.orm.hibernate5.HibernateExceptionTranslator
은 vanilla Hibernate (SessionFactoryUtils
)를 사용하여 예외를 매핑하려고한다는 의미에서 fallthrough를 사용합니다. 번역 할 수 없으면 EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible()
을 통해 JPA를 시도합니다.스프링 데이터 예외 변환을 비활성화하는 방법
IllegalStateException
을 InvalidDataAccessApiUsageException
으로 번역 할 때 후자가 문제가됩니다. 나는 왜 IllegalStateException
와 IllegalArgumentException
이이 특별한 대우를 받는지에 관해 정말로 확신하지 않고있다. 그러나 ok. 그래서 지금 우리는 갑자기 번역되지 않은 번역 된 예외로 끝납니다. 이러한 여분의 변환은 JPA의 컨텍스트에 있기 때문에 (convertJpaAccessExceptionIfPossible
이라고 함) JPA가 아니라 바닐라 최대 절전 모드이므로이 기능도 의미가 없습니다.
따라서 우리는 Hibernate 예외 만 변환되도록하는 올바른 방법은 무엇입니까? Afaic HibernateExceptionTranslator
에는 JPA 변환을 해제하는 옵션이없고 LocalSessionFactoryBean
은 HibernateExceptionTranslator
으로 확장되어 다른 구현을 삽입 할 수있는 옵션이 없습니다. HibernateExceptionTranslator
JPA를 인식하지 않고 JPA가 실제로 사용되는 경우 다른 번역기를 추가하는 것이 더 합리적이지 않습니까? 봄 데이터 reference에서