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