Spring Boot 2.0.x EntityManagerFactory为空

时间:2018-09-17 02:08:53

标签: hibernate spring-boot jpa entitymanager sessionfactory

我正在尝试使用Hibernate SessionFactory从Mysql中获取数据,并试图从EntityManagerFactory中解开SessionFactory。

此代码在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 :(得分:0)

正如@ 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);
    }
}

希望对您有用。