我有这2个类,首先我得到记录列表,并传递给另一个类(使用@Transaction)中的方法来执行一些代码,如下所示:
public class classA{
@Autowired
private classB classB;
@Autowired
private repositoryA repositoryA;
public void myMethod(){
List<MyObject> myObjList= repositoryA.findAll();
myObjList.forEach(myObj -> classB.methodWithTransaction(myObj));
}
}
public classB{
@Autowired
private repositoryB repositoryB;
@Autowired
private repositoryC repositoryC;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodWithTransaction(MyObject obj){
BigDecimal value = repositoryB.findSomeValueByOjb(obj.getId());
log.debug("value {}", value);
repositoryC.saveSomeThing(value);
}
}
所以我的问题是,当我运行此代码时,如果我的repositoryB.findSomeValueByOjb(obj.getId())
中只有一项,则在myObjList
中工作正常,但是如果第二次{{1} 1}}被称为他第一次返回相同的值(甚至带有另一个ID值)
只有在运行我的nativeQuery的repositoryB.findSomeValueByOjb(obj.getId())
方法中放上findSomeValueByOjb
时,我才能做工作
有人知道为什么吗?
tks