当我使用两个实体创建方法@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,另一个事务用于插入。
答案 0 :(得分:0)
您从哪里调用myMethod()的?
如果它来自同一类,则好像@Transactional
注释都没有,因为未在spring代理对象上调用method,并且您将需要单独的事务来进行更新和插入。
答案 1 :(得分:0)
从主方法到子方法使用@Transactional(propagation.MANDATORY),我可以对所有实体使用一个事务