Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该在哪里设置AbstractPlatformTransactionManager的标志_Java_Spring_Hibernate_Jpa_Spring Transactions - Fatal编程技术网

Java 我应该在哪里设置AbstractPlatformTransactionManager的标志

Java 我应该在哪里设置AbstractPlatformTransactionManager的标志,java,spring,hibernate,jpa,spring-transactions,Java,Spring,Hibernate,Jpa,Spring Transactions,我有一个spring项目,配置如下: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" p:driverClassName="oracle.jdbc.driver.OracleDriver" p:url="jdbc:oracle:thin:@127.0.0.1:1521:xe" p:username="dev" p:password="****"

我有一个spring项目,配置如下:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"
    p:driverClassName="oracle.jdbc.driver.OracleDriver" p:url="jdbc:oracle:thin:@127.0.0.1:1521:xe"
    p:username="dev" p:password="****" >
</bean>


<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

    <property name="dataSource" ref="dataSource" />
     ...
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>

    <property name="jpaProperties">
        <props>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
    </property>
</bean>

<context:component-scan base-package="ge.class.entity">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository" />
</context:component-scan>


<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager" />

同样的文档说明SpringJPA不支持嵌套的事务。jdbc驱动程序应该支持嵌套的TransactionOK,但是。。。我不知道现在该怎么办。。。如何解决我的问题,我需要嵌套事务…请您详细说明如何在您的服务中执行事务?你可能想看看下面的url。我认为你可以使用事务的属性来确定事务的范围。我知道它们。REQUIRES_NEW不适用于我,因为我没有启用嵌套事务。所以我正在寻找配置的方法——我知道如何编写注释。请看:好的。我想我现在更了解你的问题了。不幸的是,如果您在同一服务层中调用第二个方法,spring不会为您添加另一个事务层。只有在调用不同服务层的方法时,spring才能为新调用的服务方法创建另一个代理(事务边界)。如果我必须处理这个案例,我会求助于手动事务,并为每个手动事务尝试catch块,这样我就可以回滚。
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.Transactional;

@EnableTransactionManagement()
@Repository
public class MavenDaoImpl implements MavenDao {

    protected EntityManager entityManager;
    public EntityManager getEntityManager() {
        return entityManager;
    }

    @PersistenceContext
    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }