如何获取和使用瞬态实例?

时间:2013-08-14 18:17:43

标签: hibernate grails gorm

我只是想在控制器中使用域类的瞬态实例。瞬态实例本质上是两个持久化实例的交叉产品,我不需要或不想持久化它。但是,我仍然得到一个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

......这引发了异常!

2 个答案:

答案 0 :(得分:1)

您可以从会话中evict,以便在刷新

期间不会处理它

答案 1 :(得分:1)

我的猜测是您修改了客户端实例,因此当您创建新的保修时,它会引用未保存的客户端。

在创建保修之前尝试添加client.discard()