【问题标题】:grails getPersistentValue() value changes without savinggrails getPersistentValue() 值更改而不保存
【发布时间】:2016-09-23 19:45:35
【问题描述】:

我正在使用 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

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

【问题讨论】:

标签: grails grails-orm


【解决方案1】:

我可以通过导入事务注释来解决这个问题

import org.springframework.transaction.annotation.Transactional

然后添加

@Transactional(readOnly = true)

在被调用的方法之前。

但这并非在所有情况下都有效,因为并非所有服务调用都是只读的。

【讨论】:

    猜你喜欢
    • 2011-06-27
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多