Grails Gorm مشكلة: يشير الكائن إلى مثيل عابر غير محفوظ
سؤال
رمز Grails أدناه يلقي الاستثناء التالي عند محاولة ذلك .save()
كائن فو:
org.hibernate.TransientObjectException/
org.springframework.dao.InvalidDataAccessApiUsageException:
object references an unsaved transient instance -
save the transient instance before flushing: Bar
أظن أنني أفتقد بعضًا من دلالات GORM فيما يتعلق بكائنات المجال تلقائيًا من Params 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 ]
}
}
المحلول
إذا كان "شريط" موجود فقط في سياق FOO ، أضف السطر التالي إلى Bar.groovy
class Bar {
static belongsTo = Foo
}
إذا تم استخدام "شريط" في سياق آخر ، فقد تستخدم في foo.groovy
class Foo {
Bar bar
static mapping = {
bar cascade:'all-delete-orphan'
}
}
لا تنتمي إلى StackOverflow