0

我在 Spring 中遇到了 @Transaction 的问题。基本上,不会使用以下消息创建事务:

由于没有正在进行的交易而延迟身份插入

我在 Spring AOP 论坛中对问题进行了完整描述

http://forum.springsource.org/showthread.php?132612-Transaction-management

任何建议将不胜感激!

斯特凡诺

4

2 回答 2

0

找到了解决方案。

问题出在配置中。我添加了两个元素context:spring-configuredcontext:load-time-weaver这意味着两个不同的东西。第一个激活 AspectJ编译时编织(我不明白),第二个激活 AspectJ加载时间编织。我认为这两个元素不能很好地协同工作。

我决定使用编译时编织器,并且(经过一番挣扎......)我发现(显然)外部 jar 没有用这种配置编织,仅仅是因为它们尚未构建。

最简单的解决方法是修改节点aspectj-maven-plugin下(在POM.xml中)添加的配置configuration

<weaveDependencies>
<weaveDependency>
<groupId>GROUP-ID</groupId>
<artifactId>ARTIFACT-ID</artifactId>
</weaveDependency>
</weaveDependencies>
对于您需要编织的每个工件。

现在交易工作正常!

@Ralph:非常感谢您抽出宝贵时间!

问候,

斯特凡诺

于 2012-11-22T17:11:02.553 回答
0

在您的代码中,您已经定义了这样的服务:

@Service
@Configurable
public class ServiceImpl<T> implements Service<T> {
@Override
@Transactional
public T save(T entity) {
          ....
    }
}

我不知道你为什么使用@Configurable注释。如果您不需要它们(也就是说,如果您不通过 new 创建此服务的实例),我会删除它们。

原因是我记得spring文档说@Configurable启用注入,但它没有说任何关于启用的加载时间编织支持@Configurable

于 2012-11-21T14:44:43.220 回答