我已经创建了一个Spring启动应用程序,我想处理Hibernate SessionFactory,所以在我的服务类中,我可以按如下方式调用Hibernate SessionFactory:
@Autowired
private SessionFactory sessionFactory;
我在stackoverflow中发现了一个类似的问题,我必须在application.properties中添加以下行:
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
但我收到此错误:
Cannot resolve property 'current_session_context_class' in java.lang.String
我该如何解决这个问题?
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
答案 0 :(得分:12)
从2.0版开始,JPA可以轻松访问底层实现的API。 EntityManager
和EntityManagerFactory
提供了一个unwrap
方法,该方法返回JPA实现的相应类。
在Hibernate的情况下,这些是Session
和SessionFactory
。
SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
答案 1 :(得分:4)
尝试在Spring配置中启用Preferences -> Editor -> Code Style
。
HibernateJpaSessionFactoryBean
看看: https://stackoverflow.com/a/33881946/676731
通过Spring配置,我的意思是使用@Configuration
注释或@SpringBootApplication
注释的类(使用@Bean
public HibernateJpaSessionFactoryBean sessionFactory() {
return new HibernateJpaSessionFactoryBean();
}
隐式注释)。