![](/img/trans.png)
[英]Call @Transactional annotated method from another @Transactional annotated method
[英]spring transactional annotated method without merge call on entities
我们正在使用spring roo,并且代码库中有一些用@Transactional注释的方法。
例如,
class XService {
@Transactional
public Response doSomething(String email) {
User u = User.findByEmail(email);
u.setLastModified(Calendar.getInstance());
return new Response("OK");
}
}
请注意,在setLastModified之后不会调用u.merge()。 此方法完成后,用户表的lastModified列中的值应该是什么。
谢谢!
取决于:
XService.doSomthing
方法是否使用@Transactional
注释,并且是否以RuntimeException
结尾。 默认情况下,如果您从控制器调用XService.doSomthing
,则应该更新User实例,因为u
是一个附加实例,并且方法不会引发运行时异常 。
看一下这篇文章 ,我认为它可以为您解释有关JPA上交易行为的有趣信息。
祝好运。
在哪里调用“ u.merge() ”?
另一方面,Roo不会使用@Transactional注释每个Service方法,而是使用生成的ITD注释整个Service。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.