为什么实体在没有显式调用save方法的情况下改变了状态

时间:2018-02-12 09:50:43

标签: java spring hibernate spring-boot spring-data-jpa

我有以下伪代码:

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一起使用。

脏检查所述行为的原因?

0 个答案:

没有答案