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

如何在Spring Boot中配置Hibernate以使用带有Criteria API的Spring数据保存和会话工厂

韩良策
2023-03-14

我想使用Spring Data(保存方法,使用默认名称为“transactionManager”的@Transactional)和我自己配置的会话工厂来使用它,例如,在标准应用编程接口中。所以我配置了会话工厂、jpaVendorAdapter、数据源、平台交易管理器bean。

PlatformTransactionManager类似于:

    @Bean(name = "transactionManager")
    public PlatformTransactionManager hibernateTransactionManager() {
        HibernateTransactionManager transactionManager = new HibernateTransactionManager();
//        JpaTransactionManager transactionManager = new JpaTransactionManager();

        transactionManager.setSessionFactory(sessionFactory().getObject());
//        transactionManager.setDataSource(this.dataSource());

        return transactionManager;
    }

所以,这个配置不允许Spring Data保存方法正常工作。当我执行它时,它不会抛出任何异常,但它也不会插入数据,只更新表结构。从另一方面来说,如果我使用

JpaTransactionManager transactionManager = new JpaTransactionManager();

代替HibernateTransactionManager,它工作得很好,但是使用我的自动连接会话工厂的其他方法给我一个异常:“javax . persistence . transactionrequiredexception:没有事务正在进行中”

例如:

@Transactional
public List find() {
    return this.getCSession().createNativeQuery("SELECT CAST(animals.rabbit.id as VARCHAR) AS id, name FROM animals.rabbit").getResultList();
}

所以,我很有兴趣同时使用这两种方法。我怎么能修好它?!

共有1个答案

慕冠宇
2023-03-14

如何使用 JpaTransactionManager 并使用实体管理器而不是Hibernate会话,或者如果您确实需要会话,请将其从实体管理器中解包。

 类似资料:
  • 我正在尝试在eclipse中设置Hibernate Tools。问题是它找不到任何映射文件。 我创建了一个控制台配置,指向我的environment.properties文件和hibernate.cfg.xml.问题是hibernate.cfg.xml.中没有映射 看起来它在myproject持久化中使用了spring bean sessionFactory。xml(如下)来查找所需的映射文件。我

  • 我有一个Spring Framework4应用程序,它使用Hibernate4.3.8作为JPA提供程序。我想使用Hibernate过滤器,因此我需要启用它们。我想在应用程序中全局地做到这一点,我试图用Spring AOP做到这一点。这个想法是,我可以编写一个方面,在每次创建/获取会话时启用过滤器,就像这个问题和这个问题一样。 我已经将和依赖项添加到我的项目中(使用Maven)。我添加了以下方面。

  • 问题内容: 我正在使用Spring和Hibernate,Spring的配置如下。如何配置两个数据源,会话工厂。使用注释管理事务。请指教 问题答案: 在Hibernate DAO中,我们可以使用@Qualifier注释,如下所示连接2个会话工厂

  • 我在我的项目中使用spring data jpa和spring mvc。然而,我总是得到错误。 如果我注释jpaconfig.java,我的应用程序运行良好。 我不知道为什么?请你帮帮我: 我的代码: WebAppConfig.java jpaconfig.java 应用程序.属性

  • 我知道SpringDataJPA使用Hibernate,但是,我有一些问题需要澄清。 > 与使用hibernate会话和HQL相比,使用@Query编写自定义查询有哪些优势? 使用SpringDataJParepository查询方法和使用HibernateHQL之间有什么性能差异吗? 我在这里看到了其他类似的问题,他们没有回答这些问题。

  • 我最近将我的Hibernate版本升级到4.3.4。最终。基于Hibernate的上下文会话配置,这个新版本不再基于ThreadLocal。如果我到目前为止得到的是正确的,我需要做些什么来提高它的效率吗?如果它不正确,我该怎么办?我不知道。 请注意,文档中提到:Hibernate提供了三种当前会话跟踪方法。基于“线程”的方法不适用于生产使用;它只对原型和教程(如本教程)有用。 Hibernate.