Grails 选择后自动保存

Grails 选择后自动保存,grails,Grails,我注意到,使用简单的select调用服务方法会使MyDomain.class日期字段在DB中更新(清除时间)。但是,用@Transactional(readOnly=true)封装该方法不会更新日期值 为什么将值保存到DB中 这里是服务方法 @Transactional(readOnly = true) Date getDate() { Date date = null date = MyDomain.executeQuery("select min(s.startDate)

我注意到,使用简单的select调用服务方法会使MyDomain.class日期字段在DB中更新(清除时间)。但是,用@Transactional(readOnly=true)封装该方法不会更新日期值

为什么将值保存到DB中

这里是服务方法

@Transactional(readOnly = true)
Date getDate() 
{
    Date date = null
    date = MyDomain.executeQuery("select min(s.startDate) from MyDomain s where ....)[0]
    print "Result: " + date

}

只有当对象在进入hibernate会话(选中)之后和会话关闭之前(通常在方法结束时)以某种方式发生更改时,才会在数据库中更新该对象。看一看你的对象,看看它是如何以你不想的方式被修改的。

事实上,对象并没有改变。我添加了print语句,以在事务结束之前检查从数据库检索到的结果。研究结果如下:1。没有@Transactional(readOnly=true)结果:2012-10-20 00:00:00.0 2。使用@Transactional(readOnly=true):2012-10-20 17:00:00.0提供MyDomain类的定义,您可能已经以读取时更新自身的方式对其进行了定义。也。。您的查询是否可能返回不同的对象,因此日期不同?