春天事务批注的方法不会对实体

问题描述:

我们使用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或不

  1. 方法,并将其与RuntimeException或没有结束。
  2. 默认事务传播行为配置。

默认情况下,如果从控制器,在用户情况下应该进行更新u打电话XService.doSomthing附实例和方法不抛出运行时异常

this post我认为可以解释你有关JPA交易行为的有趣的信息。

祝你好运。

哪里是 “u.merge()” 叫什么名字?

另一方面,Roo并没有使用@Transactional来注释每个服务方法,它在生成的ITD处注释整个服务。

+0

u.merge()根本没有被调用。是的,这不是一个roo生成的方法。请考虑添加您的答案作为评论,因为它没有试图回答这个问题。谢谢。 – riship89 2015-01-21 17:49:37