调用withNewSession后,域属性值发生更改

时间:2016-07-04 07:00:04

标签: grails

以下是可以看到差异的代码的一部分。我正在摸不着头脑的问题是这个。我很困惑为什么在离开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对这种明显的差异负责?

0 个答案:

没有答案