Интеграция Hibernate 5 с Spring Boot 2 - PullRequest
0 голосов
/ 24 января 2019

Я планирую создать приложение с загрузочной пружиной (версия 2) в hibernate 5.3, но у меня возникают проблемы при интеграции hibernate 5. Поскольку это весеннее загрузочное приложение, контейнер будет автоматически настраивать источник данных и вариант JPA EntityManagerFactory, и мы можем создать Hibernate SessionFactory из этого EntityManagerFactory, используя метод unwrap ().

Итак, это мой код для класса конфигурации Hibernate

@Configuration

public class HibernateUtil {

    @Autowired
    private EntityManagerFactory entityMangerFact;

    @Bean
    public SessionFactory sessionFactory() {
        return entityMangerFact.unwrap(SessionFactory.class);
    }

}

Но это thowing BeanCurrentlyInCreationException . Но если я добавлю unwrap () в метод класса обслуживания, он не будет генерировать исключения. Но я думаю, что это неправильно, так как у нас будет больше методов обслуживания, и нам, возможно, придется вызывать unwrap () для каждого метода обслуживания. Журнал ошибок:

Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'sessionFactory': Requested bean is currently in creation: Is there an unresolvable circular reference?
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.beforeSingletonCreation(DefaultSingletonBeanRegistry.java:339) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:215) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]

Почему unwrap () не работает в классе конфигурации?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Можете ли вы попробовать внедрить его как зависимость компонента SessionFactory, а не компонент @Configuration?

@Configuration
public class HibernateUtil {

    @Bean
    public SessionFactory sessionFactory(EntityManagerFactory entityMangerFact) {
        return entityMangerFact.unwrap(SessionFactory.class);
    }

}
0 голосов
/ 25 января 2019

В весенней загрузке у вас есть доступ к EntityManagerFactory, поскольку вы можете зарегистрировать эту конфигурацию источника данных , но вам не нужно использовать EntityManager напрямую для взаимодействия с базой данных, вы можете использовать spring-data-jpa

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