0

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

...这引发了异常!

4

2 回答 2

1

您可以evict从会话中进行,因此在刷新期间不会对其进行处理

于 2013-08-14T18:41:30.657 回答
1

我的猜测是你修改了你的客户端实例,所以当你创建一个新的保修时,它引用了未保存的客户端。

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

于 2013-08-14T19:45:07.337 回答