在尝试.save()
Foo对象时,下面的Grails代码抛出以下异常:
org.hibernate.TransientObjectException/
org.springframework.dao.InvalidDataAccessApiUsageException:
object references an unsaved transient instance -
save the transient instance before flushing: Bar
我想我错过了与HTTP params自动填充域对象有关的一些GORM语义。
我的问题很简单:
型号:
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 ]
}
}
答案 0 :(得分:4)
如果'Bar'仅存在于Foo的上下文中,请将以下行添加到Bar.groovy
class Bar {
static belongsTo = Foo
}
如果在其他情况下使用'Bar',您可以在Foo.groovy中使用
class Foo {
Bar bar
static mapping = {
bar cascade:'all-delete-orphan'
}
}