Hibernate/GORM: die Auflistung wurde nicht verarbeitet flush()
Ich habe ein integration-test in meiner Grails-Anwendung schlägt fehl, wenn ich versuche zu speichern, eine Entität des Typs Member
invitingMember.save(flush: true)
Dies wirft folgende exception
org.hibernate.AssertionFailure:
Sammlung
[com.MeineFirma.Facette.Facette.Kanäle] war
nicht verarbeitet flush() bei
com.MeineFirma.Mitglied.MemberConnectionService.addOrUpdateContact(MemberConnectionService.groovy:939)
Früher in der Transaktion füge ich ein Objekt in eine collection-property der invitingMember
. Meine Vermutung ist, dass die Ausnahme ausgelöst wird, in der Zeile oben ein, weil es nur an dieser Stelle, dass das Objekt der Sammlung Hinzugefügt wird beibehalten.
InformationsquelleAutor Dónal | 2009-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das zugrunde liegende problem ist wahrscheinlich, dass Hibernate nicht cascade speichern. Also, wenn Sie Spülen Sie die
Member
, Hibernate merkt, dass die Sammlung ist noch schmutzig (das ist wahrscheinlich nicht das, was Sie wollen). Also entweder Spülen Sie die Sammlung von Hand oder sagen, Hibernate, cascade alle updates.InformationsquelleAutor Aaron Digulla
Ich eine mögliche Lösung gefunden hier.
Eigentlich schauen, toString, equals, hashcode und stellen Sie sicher, dass Sie keinen Zugriff auf Ihr faulen accessor.
Ich weiß, ich spreche hier von java und hier die Frage ist, grails, aber vielleicht gibt es die gleiche Art der Sache für grails.
Zögern Sie nicht, zu Bearbeiten.
War das Thema für mich (in java)
InformationsquelleAutor unludo
Ist die einzige Zeit, die ich habe festgestellt, dass exeception ist bei der Verwendung von Hibernate Veranstaltungen z.B. beforeInsert, beforeUpdate-etc - sind Sie mit diesen?
Gibt es ein Problem in JIRA zu diesem Zusammenhang, der behoben wurde für Grails 1.2
InformationsquelleAutor leebutts
Hatte ich den Fehler, wenn einer versucht auf element hinzufügen, um eine Sammlung nach dem löschen von Elementen aus der Sammlung. Ich löste es durch den Aufruf
save(flush:true)
vor hinzufügen neuer Elemente in die Kollektion.select
.InformationsquelleAutor IgniteCoders