Grails Gorm مشكلة: يشير الكائن إلى مثيل عابر غير محفوظ

StackOverflow https://stackoverflow.com/questions/1803415

  •  05-07-2019
  •  | 
  •  

سؤال

رمز 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'
  }


}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top