没有合并调用实体的spring transactional annotated方法

时间:2015-01-21 00:14:16

标签: java spring spring-roo transactional

我们正在使用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()。在此方法完成后,user表的lastModified列中的值应该是什么。

谢谢!

2 个答案:

答案 0 :(得分:1)

取决于:

  1. 调用XService.doSomthing的方法是否使用@Transactional进行注释,并以RuntimeException结尾。
  2. 默认事务传播行为配置。
  3. 默认情况下,如果您从控制器呼叫XService.doSomthing,则应更新用户实例,因为u附加实例和方法不会引发运行时异常

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

    祝你好运。

答案 1 :(得分:-1)

u.merge()”在哪里??

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

相关问题