Hibernate / GORM: la collection n'a pas été traitée par flush ()
J'ai un test d'intégration dans mon Graal application qui échoue lorsque j'essaie d'enregistrer une entité de type Member
invitingMember.save(flush: true)
Ce qui soulève l'exception suivante
org.mise en veille prolongée.AssertionFailure:
collection
[com.mycompany.facette.Facette.les canaux] a été
ne sont pas traitées par la méthode flush() à
com.mycompany.membre.MemberConnectionService.addOrUpdateContact(MemberConnectionService.groovy:939)
Plus tôt dans la transaction, j'ai ajouter un objet à une collection de propriété de invitingMember
. Ma conjecture est que l'exception est lancée à la ligne au-dessus, parce que c'est seulement à ce moment que l'objet ajouté à la collection est conservée.
source d'informationauteur Dónal
Vous devez vous connecter pour publier un commentaire.
Le problème sous-jacent est probablement qu'Hibernate ne pas répercuter la sauver. Ainsi, lorsque vous tirez la chasse d'
Member
Hibernate avis que la collecte est encore sale (ce qui n'est probablement pas ce que vous voulez). Donc, à fleur de la collection manuellement ou dire Hibernate en cascade toutes les mises à jour.J'ai trouvé une solution possible ici.
En fait, regardez toString, equals, hashcode et assurez-vous que vous n'êtes pas accès à votre paresseux accesseur.
Je sais que je suis en train de parler de java et ici, la question est sur le graal, mais peut-être qu'il est le même genre de chose pour le graal.
N'hésitez pas à modifier.
C'était le problème pour moi (en java)
La seule fois où je l'ai rencontré et qu'il exeception est lors de l'utilisation d'Hibernate événements par exemple beforeInsert, beforeUpdate etc - les utilisez-vous?
Il y a un problème dans JIRA liées à ce qui a été fixée pour le Graal 1.2
J'ai eu cette erreur lors d'une tentative d'ajout d'élément à une collection après la suppression d'éléments de la collection. Je l'ai résolu en appelant
save(flush:true)
avant d'ajouter de nouveaux éléments à la collection.select
.