【问题标题】:JPA spring @Transaction autocommitJPA spring @Transaction 自动提交
【发布时间】:2014-04-16 11:46:41
【问题描述】:

我正在使用带有 oracle 的 spring-data-jpa。对于运行时异常,我无法让 @Transactional 默认回滚。

这里是sn-ps:

<persistence-unit name="dev2db" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.archive.autodetection" value="class, hbm"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
            <property name="hibernate.hbm2ddl.auto" value="validate" />

            <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@host:port" />
            <property name="javax.persistence.jdbc.user" value="loginid" />
            <property name="javax.persistence.jdbc.password" value="mypass" />
        </properties>
    </persistence-unit>

事务方法使用 import javax.transaction.Transactional;

@Transactional
    public void uploadPanelAndAPK(String pz, byte[] file, String apk, byte[] fileApk, byte[] icon) {
        uploadPanel(pz, file);
        uploadApk(apk, fileApk, icon);

    }

如果uploadApk 失败,uploadPanel 不会回滚。

beans context.xml sn-p:

<context:annotation-config />
    <tx:annotation-driven transaction-manager="transactionManager"/>
    <jpa:repositories base-package="com.myco.dao" />

    <bean id="transactionManager" 
          class="org.springframework.orm.jpa.JpaTransactionManager"
          p:entityManagerFactory-ref="entityManagerFactory"/>


    <bean id="entityManagerFactory" 
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
          p:persistenceUnitName="dev2db">
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
    </bean>

    <bean id="panelbo" class="com.myco.bo.PanelServiceSpringData"/> 

问候,

米腾。

【问题讨论】:

  • 可能是这样的:@Transactional(rollbackFor=RuntimeException.class, propagation=Propagation.REQUIRED)

标签: java transactions spring-data-jpa


【解决方案1】:

javax.transaction.Transactional (尚不)受支持。使用javax.ejb.TransactionAttributeorg.springframewor.transaction.annotation.Transactional

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 2015-09-22
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多