Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Spring 为什么在使用aspectJ模式事务时没有事务?_Spring_Spring Data Jpa_Spring Aspects - Fatal编程技术网

Spring 为什么在使用aspectJ模式事务时没有事务?

Spring 为什么在使用aspectJ模式事务时没有事务?,spring,spring-data-jpa,spring-aspects,Spring,Spring Data Jpa,Spring Aspects,我有这样的服务层: @Service @Transactional public class TransactionService { @Autowired private TransactionDao dao; @Transactional(propagation = Propagation.REQUIRED) public void A() { ... B(); } @Transactional(propa

我有这样的服务层:

@Service
@Transactional
public class TransactionService {

    @Autowired
    private TransactionDao dao;


    @Transactional(propagation = Propagation.REQUIRED)
    public void A() {
        ...
        B();
    }
    @Transactional(propagation = Propagation.REQUIRED_NEW)
    public void B() {
        dao.save()
    }

}
使用此配置:

<property name="jpaVendorAdapter">
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<tx:annotation-driven transaction-manager="transactionManager" />
<property name="jpaProperties">
    <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
        <prop key="hibernate.show_sql">${show.sql}</prop>
        <prop key="hibernate.hbm2ddl.auto">${hbm2ddl.auto}</prop>
    </props>
</property>

使用aspectj模式需要编译或加载时编织。这不是一个简单的切换模式的问题,它需要更多。我找到了教程,它们不使用任何编织。是的,他们有。。。这是由
spring configured
标记启用的,因为这也需要编织。如果没有编织,它将无法工作,否则您必须使用代理。spring配置的注释是否足够?它有什么作用?我不需要实现我的方面(在方法执行之前/之后?)等等吗?你不需要实现任何东西。。。您需要为spring方面使用编译时编织或提前期。。。
<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" />
SEVERE: Servlet.service() for servlet [ name ] in context with path [/name-services] threw exception [Request processing failed; nested exception is javax.persistence.TransactionRequiredException: No transactional EntityManager available] with root cause
javax.persistence.TransactionRequiredException: No transactional EntityManager available
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:273)