我只是想在控制器中使用域类的瞬态实例。瞬态实例本质上是两个持久化实例的交叉产品,我不需要或不想持久化它。但是,我仍然得到一个TransientObjectException。为了方便起见,有没有办法实例化一个对象,然后在没有持久化的情况下扔掉它?
这是grails 2.2.0。谢谢!
好的,添加一些代码:
我正在处理的课程是Warranty
:
class Warranty {
// ...other fields...
Client client
client
是唯一必填字段。类似地,Client
类具有Warranty
外键:
class Client {
// ...other fields...
Warranty warranty
在控制器中:
String name = params.name
if (name == null) { return }
Client client = Client.findByClientName(name as String)
// ...other stuff...
def warranty = new Warranty(client: client)
return // for testing purposes
......这引发了异常!
答案 0 :(得分:1)
您可以从会话中evict
,以便在刷新
答案 1 :(得分:1)
我的猜测是您修改了客户端实例,因此当您创建新的保修时,它会引用未保存的客户端。
在创建保修之前尝试添加client.discard()
。