hibernate - Spring JPA - 没有事务设置自动提交 'true'

标签 hibernate jpa openjpa jpa-2.1

有什么方法可以在没有事务的情况下使用 JPA 自动提交吗?

持久性.xml

<persistence-unit name="mytest" transaction-type="RESOURCE_LOCAL">
    <properties>
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
    </properties>
</persistence-unit>

数据配置.xml

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="mytest" />
        <property name="dataSource" ref="myDataSource" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="showSql" value="true" />
                <property name="database" value="ORACLE" />
            </bean>
        </property>
        <property name="jpaPropertyMap">
            <map>
<entry key="hibernate.format_sql" value="false" />
                <entry key="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
                <entry key="hibernate.jdbc.fetch_size" value="0" />
                <entry key="hibernate.jdbc.batch_size" value="0" />
                <entry key="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy" />
            </map>
        </property>
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager"/>
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
        <qualifier value="mytest"/>
    </bean>

代码

for(User user: users) {
    entityManager.merge(user);
    entityManager.flush();
}

但是在 session 终止之前我无法看到提交。我想逐条提交。

最佳答案

不,JPA 中没有自动提交,它也没有多大意义,因为对实体的每次更改都是最终进入数据库的更改。使用自动提交,对属性的每一次更改都将是一个事务。这是一个非常特殊的要求,不符合 JPA 的候选功能。

但是您需要做的就是围绕 entityManager.merge(user); 包装一个事务

关于hibernate - Spring JPA - 没有事务设置自动提交 'true',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31229647/

相关文章:

java - JPA Criteria builder IN 子句查询

jpa - OpenJPA 架构配置

java - @EmbeddedId 如何构造其复合主键?

java - Spring CrudRepository,Webservice,返回带有特定字符串的json对象

java - 带条件生成器的 string_agg

java - org.hibernate.hql.internal.ast.QuerySyntaxException

java - spring boot hibernate关系映射错误

java - 数据库如何通过 Hibernate 与 jpa 注解的 pojo 类交互?

Spring事务上下文不持久化数据

java - OpenJPA:此配置不允许运行时优化,但列出的类型在构建时或在使用 javaagent 的类加载时未得到增强