Java 我应该在哪里设置AbstractPlatformTransactionManager的标志
我有一个spring项目,配置如下: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="****"
<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;
}