【发布时间】:2019-02-20 22:03:19
【问题描述】:
我正在尝试使用 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);
}
}
谁能帮我解决这个问题?任何帮助都会受到高度评价。谢谢!
【问题讨论】:
-
您能否添加您收到的错误消息
-
Spring Boot 2.x 正在使用 Hibernate 5.2+ 。其中包含
SessionFactory扩展EntityManagerFactory的更改。由于此更改,此代码现在使 Spring Boot 不再配置EntityManagerFactory(因为SessionFactory是其中之一)。你必须考虑你真的需要SessionFactory吗?通常,在 JPA 的当前状态下,您并不真正需要它。如果您需要Session,请使用EntityManager来`解开会话。如果你真的需要降级到低于 5.2 的 Hibernate 版本。 -
您可以从 EntityManager 获取 EntityManagerFactory,然后执行您的 getSessionFactory。
标签: hibernate spring-boot jpa entitymanager sessionfactory