2012-08-14 38 views
1

如果我使控制器的域对象,不叫.save(),Grails将在某个时候会自动为我做的。我正在创建大量域对象,而不打算保存所有这些对象,并在我的服务退出时获取“引用未保存的瞬时实例”异常。获取所有对象的列表Grails是打算奇迹般地保存

我怎么会拿到Grails将尝试保存在控制器/服务退出,这样我可以阻止其中一些被保存的所有对象的列表?

回答

3

您最好检索您知道要编辑的实例,但不希望使用read方法而不是get。使用read不会使其成为只读,因为如果您调用save()并且它已被修改,它将被保留,但在OSIV拦截器刷新会话时不会自动保留。

另一种选择(尤其是如果该实例不单独加载)是从使用detach()当你编辑它会删除它。

你也可以使用的DTO和数据复制到这些非持久性类,所以你不持久化类,只是数据类,Hibernate并不知道搞混。

+0

我谈论的对象我就与'新SomeDomainClass()',但随后并没有真正想要的。 – Mikey 2012-08-14 00:39:04

+0

此外,根据您的“使用的DTO”的评论,你可以看看我的问题:http://stackoverflow.com/questions/11918276/grails-can-i-use-domain-objects-when-i-dont-want-以保存任何东西 – Mikey 2012-08-14 00:39:43

+0

伯特,我觉得有时候我对你粗鲁无礼,对热情不够。这与我的感受离不开。你摇滚,谢谢你回答我的许多问题。 – Mikey 2012-08-14 01:15:55