我有以下伪代码:
Bid update(Bid toUpdate) {
final Bid existing = repository.findOne(toUpdated.id); // 2
if(existing.hasTerminalStatus()) {
throw new WhateverException("Editing terminated bid is not possible!");
}
// ...
closeCorrespondingBids(existing.saleOffer.id);
}
void closeCorrespondingBids(Long saleOfferId) {
final List<Bid> bids = repository.findBySaleOfferId(saleOfferId);
bids.forEach(bid -> {
bid.status = CLOSED;
update(bid); // 1
});
}
从标有// 1
的行开始,update
中的代码返回// 2
方法状态已经更改,即使没有执行save
的调用,也没有事务处理明确定义。这是为什么?
在项目spring boot v。1.5.6.RELEASE
与hibernate 5.2.11.Final
一起使用。
脏检查所述行为的原因?