当前位置: 首页 > 知识库问答 >
问题:

Hibernate 5与Spring Boot 2的集成

终子昂
2023-03-14

我计划用Hibernate5.3创建一个spring boot(版本2)应用程序,但是我在集成Hibernate5时遇到了一些问题。由于它是一个Spring Boot应用程序,容器将自动配置数据源和JPA变体EntityManagerFactory并且我们可以使用unwrap()方法从这个EntityManagerFactory创建Hibernate SessionFactory。

这是我的Hibernate配置类代码

@Configuration

public class HibernateUtil {

    @Autowired
    private EntityManagerFactory entityMangerFact;

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

}

但它正在删除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()在configuration类中失败了?

共有1个答案

韩朝斑
2023-03-14

在spring-boot中,您可以访问EntityManagerFactory,因为您可以签入此数据源配置,但您不需要直接使用EntityManager与数据库交互,您可以使用Spring-Data-jpa

 类似资料:
  • 本文向大家介绍基于springboot2集成jpa,创建dao的案例,包括了基于springboot2集成jpa,创建dao的案例的使用技巧和注意事项,需要的朋友参考一下 springboot中集成jpa需要再pom文件中添加jpa的jar包,使用springboot的话iju不用自己规定版本号了,自动管理依赖版本即可。 然后我们再添加hibernate和oracle的jar包,同样自动管理版本。

  • 我正在尝试使用 https://github.com/spring-projects/spring-security-oauth2-boot 使用本教程:https://docs.spring.io/spring-security-oauth2-boot/docs/current-SNAPSHOT/reference/htmlsingle/ SpringBoot应用程序 服务器初始化器 用户详细信

  • 我正在使用Hibernate 5和Spring 4.2。3.我找不到将eventListener添加到SessionFactory范围的方法。我只需要在hibernate持久化对象之前设置一个日期。我在Spring定义了sessionFactory。xml 我有我的GenericDAOImpl在哪里得到这个会话工厂: 我已经看到了几种方法,但其中一些方法不适用于Hibernate 5(如)。我找不

  • 我有一个redis集群,有主服务器、从服务器和3个哨兵服务器。主从映射到dns名称node1-redis-dev.com、node2-redis-dev.com。redis服务器版本为2.8 我在application.properties文件中包含以下内容。 但是,当我检查StringRedisTemplate时,在JedisConnectionFactory的hostName属性下,我看到的是

  • 我有一个要求,在调用vertx API时,根据KeyClope对用户进行身份验证。因为我是新来的钥匙斗篷。有谁能建议我如何做到这一点吗。 提前谢谢

  • 我的想法是开始集成文件和MSSQL,这是我的知识领域。不幸的是,由于这是一个相对较新的领域,我没有找到比Facebook页面或Presto.io页面更多的东西,然而对于想要从头开始了解大数据世界的人来说,这还不够好。 我将非常感谢您在这方面的帮助和/或指导。

  • 我想使用OAuth提供程序来验证对我的kuzzle实例的请求。 做这件事的标准或首选方式是什么?

  • 我正在通过在线示例学习使用FreeMarker的SpringMVC。我遇到了这个错误,但是我不知道我的getFreemarkerConfig()方法有什么问题,一整天我都在试图修复它,但是没有成功。