我正在使用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
由于某种原因,服务中的此查询会强制我的其他对象更新其持久值?有人可以解释为什么以及如何避免这种情况吗?
最佳答案
我能够通过导入事务注释来解决此问题
import org.springframework.transaction.annotation.Transactional
然后添加
@Transactional(readOnly = true)
在被调用的方法之前。
但是,这并非在所有情况下都可行,因为并非所有服务调用都是只读的。
关于grails - grails getPersistentValue()值更改而不保存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39668468/