spring - Hibernate 5 与 Spring JTA

标签 spring hibernate jta atomikos hibernate-5.x

我正在使用:

  • hibernate 5.0.2
  • Spring 4.2
  • Atomikos 3.9.3

官方文档说你只需要设置jtaTransactionManager,一切就可以了:

    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
            <property name="dataSource" ref="atomikosDataSource" />
            <property name="jtaTransactionManager" ref="jtaTransactionManager"/>
            [...]
    </bean>

不幸的是, session 没有刷新 - 没有进行写入。这是什么问题?

最佳答案

问题是 Hibernate 5 要求我们设置以下属性,而 Spring 尚未自动执行此操作:

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    [...]
    <property name="hibernateProperties">
        <props>
            [...]
            <prop key="hibernate.transaction.coordinator_class">jta</prop>
        </props>

这解决了我的问题。

关于spring - Hibernate 5 与 Spring JTA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33127854/

相关文章:

java - @ResponseBody选择不同的响应格式

hibernate - 在 hibernate bean 中添加不是 db 表中的字段的额外字段

java - 在 Eclipse 中使用 Hibernate 创建数据库的专业工作流程是什么?

java - 使用带有 JTA @Transactional 的自定义拦截器 (quarkus-narayana-jta)

postgresql - 带有 Atomikos UserTransaction 的 Jetty 数据源

java - 同一服务器上的多个应用程序使用相同的 JMX Mbean 类

java - Spring boot 无类 DefFound net/bytebuddy/dynamic/loading/ClassLoadingStrategy

java - Spring Boot 缓存 SpEL (#result) 返回 Null

java - HIbernate fetch join 发出额外的 sql 语句

java - 是否可以在一个事务中使用多个持久化单元,而不是 XA?