这杯的代码如下抛出以下例外时,试图 .save() Foo对象:

org.hibernate.TransientObjectException/
org.springframework.dao.InvalidDataAccessApiUsageException: 
object references an unsaved transient instance - 
save the transient instance before flushing: Bar

我猜我错过了一些格姆语在与自动填充的领域对象从HTTP参数。

我的问题是简单:

  • 什么是正确的方式填充和保存Foo目的,没有得到所述的例外?

模型:

class Foo {
  Bar bar
}

观点:

<g:form id="${foo.id}">
  <g:select name="foo.bar.id" from="${Bar.list()}" />
</g:form>

控制器:

class FooController {
  def fooAction = {
    Foo foo = new Foo(params)
    foo.save()
    [ foo: foo ]
  }
}
有帮助吗?

解决方案

如果'Bar'只有上下文中存在的Foo,添加下面的线条。时髦的

class Bar {
   static belongsTo = Foo

}

如果'条'是用在其他方面,你可能会用于Foo。时髦的

class Foo {
  Bar bar
  static mapping = {
    bar cascade:'all-delete-orphan'
  }


}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top