春天事务批注的方法不会对实体
问题描述:
我们使用Spring Roo的,并有与@Transactional注释的代码库的一些方法合并通话。春天事务批注的方法不会对实体
例如,
class XService {
@Transactional
public Response doSomething(String email) {
User u = User.findByEmail(email);
u.setLastModified(Calendar.getInstance());
return new Response("OK");
}
}
注意u.merge()不setLastModified之后被调用。此方法完成后,应该是用户表的lastModified列中的值。
谢谢!
答
取决于:它要求XService.doSomthing
标注有@Transactional
或不
- 方法,并将其与
RuntimeException
或没有结束。 - 默认事务传播行为配置。
默认情况下,如果从控制器,在用户情况下应该进行更新u
打电话XService.doSomthing
是附实例和方法不抛出运行时异常。
看this post我认为可以解释你有关JPA交易行为的有趣的信息。
祝你好运。
答
哪里是 “u.merge()” 叫什么名字?
另一方面,Roo并没有使用@Transactional来注释每个服务方法,它在生成的ITD处注释整个服务。
u.merge()根本没有被调用。是的,这不是一个roo生成的方法。请考虑添加您的答案作为评论,因为它没有试图回答这个问题。谢谢。 – riship89 2015-01-21 17:49:37