Определение HibernateExceptionTranslator: в фабрике бинов не найдены трансляторы исключительных ситуаций персистентности - PullRequest
2 голосов
/ 04 февраля 2012

Я пытаюсь добавить в свой проект eventRepository, который является Spring Data Repository:

public class App {

    protected static EntityManagerFactory factory;

    @Autowired
    protected EventRepository eventRepository;

    public void execute() {
        Event foo = eventRepository.findBySlug("abraxas");
    }

    public static void main(String[] args) {
        ApplicationContext context =
                new ClassPathXmlApplicationContext("beans.xml");

        App runner = (App) context.getBean("AppBean");
        runner.execute();
    }
}

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jpa="http://www.springframework.org/schema/data/jpa"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/data/jpa
            http://www.springframework.org/schema/data/jpa/spring-jpa.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

    <bean id="AppBean" class="org.app.App"></bean>
    <jpa:repositories base-package="org.app.repository" />
</beans>

Но при запуске я получаю следующее исключение:

java.lang.IllegalStateException: No persistence exception translators found in bean factory. Cannot perform exception translation.
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators

В некоторых комментариях я обнаружил, что мне нужно "настроить HibernateExceptionTranslator", но мне не удалось выяснить, как это сделать.

Я пытаюсь следовать официальной документации 1014 *, в которой не упоминается конфигурация HibernateExceptionTranslator.

Спасибо

Ответы [ 3 ]

4 голосов
/ 04 февраля 2012

Очевидно, что решение было добавление

     <bean class="org.springframework.orm.hibernate4.HibernateExceptionTranslator"/>

to beans.xml

Решение найдено благодаря JB Nizet .

1 голос
/ 04 февраля 2013

с помощью Java Config:

@Bean
public HibernateExceptionTranslator hibernateExceptionTranslator() {
    return new HibernateExceptionTranslator();
}

Использование этого импорта при использовании Hibernate 3:

import org.springframework.orm.hibernate3.HibernateExceptionTranslator;

или этот, если используется Hibernate 4:

import org.springframework.orm.hibernate4.HibernateExceptionTranslator;
0 голосов
/ 18 июля 2013

Основная причина - Java.lang.IllegalStateException, которая не является подклассом hibernateException как пружина HibernateExceptionTranslator может перевести ваше исключение в DataAccessException(Runtime Exception).

поэтому вместо HibernateExceptionTranslator добавьте org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor в файл конфигурации или applicationC0ntext-*.xml.Затем отметьте @Repository аннотацию в файле постоянства с соответствующим сканированием компонента в applicationC0ntext-*.xml или файле конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...