grails getPersistentValue()值更改而不保存

时间:2016-09-23 19:45:36

标签: grails gorm

我使用getPersistentValue()方法来确定属性的更改方式。但是我发现即使我没有明确保存对象,这个方法也会返回不同的值。 这就是我一直把它缩小到......

trip.properties=[start:params.startmile,
        end:params.endmile, 
        satusFlag:params.statusFlag,
        description:params.description            
       ];

  // print statusFlag for checking
  log.debug(trip.getPersistentValue('statusFlag')+":"+trip.statusFlag);

  def driver=driverService.getValidDriver(params.driver,params.date);
  //the persistent value of statusFlag has changed!!!!
  log.debug(trip.getPersistentValue('statusFlag')+":"+trip.statusFlag);

服务电话只是另一个标准搜索,如果他/她在某个日期受雇

,则返回该驱动程序
 def driver=Drivers.createCriteria().get{
        and{
           eq('id',id);
           eq('division',division);
           le('startDate',compareDate);
           or{
               ge('endDate',compareDate);
               isNull('endDate');
           }
         }

     };
    return service

由于某种原因,服务中的此查询会强制我的其他对象更新其持久值?有人可以解释为什么以及如何避免这种情况吗?

1 个答案:

答案 0 :(得分:0)

我能够通过导入交易注释来解决这个问题

import org.springframework.transaction.annotation.Transactional

然后添加

@Transactional(readOnly = true)

在被调用的方法之前。

但是,这并不适用于所有情况,因为并非所有服务调用都是只读的。