Spring Boot 2.0.x EntityManagerFactory Null - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь использовать Hibernate SessionFactory для получения данных из Mysql и пытался развернуть SessionFactory из EntityManagerFactory.

Этот код отлично работает в Spring boot 1.5.x, но не в 2.0.x

@Configuration
public class SessionFactoryConfig {

@Autowired
private EntityManagerFactory entityManagerFactory;

@Bean
public SessionFactory getSessionFactory() {
    if (entityManagerFactory.unwrap(SessionFactory.class) == null) {
        throw new NullPointerException("Factory is not a hibernate factory");
    }
    return entityManagerFactory.unwrap(SessionFactory.class);
 }
}

Может кто-нибудь помочь мне решить эту проблему? Любая помощь будет высоко ценится. Спасибо!

1 Ответ

0 голосов
/ 16 ноября 2018

Как указал @ m-deinum в комментарии, если вы действительно хотите использовать SessionFactory, вы можете избежать создания SessionFactory и использовать внедренный экземпляр EntityManager для доступа к нему непосредственно в вашем объекте репозитория.

Например:

@Repository
public class MyRepository {
    @Autowired
    private EntityManagerFactory emf;

    public void saveEntity(Foo foo) {
        emf.unwrap(SessionFactory.class).getCurrentSession().saveOrUpdate(foo);
    }

    @Override
    public Foo getEntity(Integer id) {
        return emf.unwrap(SessionFactory.class).getCurrentSession().get(Foo.class, id);
    }
}

Надеюсь, что это работает для вас.

...