0

有没有人有过在 Groovy 类中没有开始使用 Spring 事务(类级别、代理、注释驱动)的经验?我一直在与一个无法解释的 LazyInitialization 异常作斗争,注意到堆栈跟踪不包括启动事务的调用。听起来很疯狂,但我不得不怀疑 Groovy 是否接受了 Transactional 注释。

4

2 回答 2

1

其实我找到了问题的根源。来自 Spring 文档(我强调添加):

24.5.1. AOP - 建议脚本 bean 可以使用 Spring AOP 框架来建议脚本 bean。Spring AOP 框架实际上并不知道所建议的 bean 可能是脚本 bean,因此您可能正在使用或打算使用的所有 AOP 用例和功能都将与脚本 bean 一起使用。在为脚本化 bean 提供建议时,您只需要注意一件事(小)……您不能使用基于类的代理,而必须使用基于接口的代理。 当然,您不仅限于建议脚本化 bean……您还可以用受支持的动态语言自己编写方面,并使用此类 bean 来建议其他 Spring bean。不过,这确实是对动态语言支持的高级使用。

我的问题是我使用的是基于类的代理。

于 2010-04-28T17:22:39.317 回答
0

如果您使用的是 Grails,您可以尝试使用

MyDomainClass.withTransaction {    
  // Code within the transaction goes here
}

作为事务注释的替代方法。如果代码使用这种方法,那么您可以确定它是导致问题的原因的注释(尽管我知道您可能不喜欢将此作为永久解决方案)。

于 2010-04-28T07:24:50.577 回答