春季@交易行为

时间:2020-10-12 14:09:14

标签: java spring database hibernate transactions

当我使用两个实体创建方法@Transactional时,这是正常现象,一个实体用于更新,另一个实体用于插入,而Spring不使用同一事务进行更新和插入?

@Transactional
public void myMethod(args...){
    Entity1 entity1 = entity1Repository.findById(args);
    entity1.setValue(args);
    Entity2 entity2 = new Entity2();
    entity2.setValue(args);
    entity2Respository.save(entity2);
}

在休眠日志中,我看到两个事务,一个事务用于findBy和update,另一个事务用于插入。

2 个答案:

答案 0 :(得分:0)

您从哪里调用myMethod()的? 如果它来自同一类,则好像@Transactional注释都没有,因为未在spring代理对象上调用method,并且您将需要单独的事务来进行更新和插入。

答案 1 :(得分:0)

从主方法到子方法使用@Transactional(propagation.MANDATORY),我可以对所有实体使用一个事务

相关问题