以下是可以看到差异的代码的一部分。我正在摸不着头脑的问题是这个。我很困惑为什么在离开withNewSession块之后注册状态从Active变为Inactive。
Transaction.withNewSession{ session ->
if (saleId?.isLong()){
invoices = registrationService.completeSale(saleId.toLong(), transactionResponse)
}
println Registration.last().status //ACTIVE
}
println Registration.last()。status // INACTIVE
以下部分是可选的,但仅供参考我粘贴了它。 completeSale方法做的一件事是它调用以下方法来激活注册。
void activateRegistrations(SaleInvoice invoice){
Assert.notNull(invoice, 'SaleInvoice cannot be null when activating registrations.')
List<Registration> registrations = this.findRegistrationsBySaleInvoice(invoice)
registrations.each{
it.status = EntityStatus.ACTIVE
it.save()
}
}
现在,我怀疑为什么第一个println语句,即println Registration.last()。status // ACTIVE将打印ACTIVE,第二个将打印INACTIVE。我猜测Transaction.withNewSession与它有关,因为更改发生在边界 withNewSession块。如何通过NewSession对这种明显的差异负责?