我使用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
由于某种原因,服务中的此查询会强制我的其他对象更新其持久值?有人可以解释为什么以及如何避免这种情况吗?
答案 0 :(得分:0)
我能够通过导入交易注释来解决这个问题
import org.springframework.transaction.annotation.Transactional
然后添加
@Transactional(readOnly = true)
在被调用的方法之前。
但是,这并不适用于所有情况,因为并非所有服务调用都是只读的。