Exception en veille prolongée (Ne pas modifier la référence à la collection cascade=“all-delete-orphan”)
J'ai un problème bizarre dans hibernate. Je suis de l'utilisation d'hibernate et spring dans mon projet.
Problème c'est que je vais avoir une relation parent-enfant, et quand j'essaie de mettre à jour le parent que je suis l'exception
Causés par: org.mise en veille prolongée.HibernateException: Ne pas modifier la référence à la collection cascade="all-delete-orphan"
Suivantes sont les mappages :
Parent :
<set name="kittens" fetch="join" lazy="false"
inverse="true" cascade="all-delete-orphan">
<key>
<column name="ID" precision="22" scale="0"
not-null="true" />
</key>
<one-to-many
class="kitten" />
</set>
Enfant :
<composite-id name="id" class="kittenId">
<key-property name="kittenId" type="java.lang.Long">
<column name="Kitten_ID" precision="22" scale="0" />
</key-property>
<key-many-to-one name="cat" class="cat">
<column name="ID" precision="22" scale="0" />
</key-many-to-one>
</composite-id>
J'ai trouvé dans un forum et essayé de changer comme
public void setKittens(Set kittens) {
this.kittens.clear();
this.kittens.addAll(kittens);
}
Mais maintenant, je suis confronté à
org.mise en veille prolongée.PropertyAccessException: une Exception s'est produite à l'intérieur de poseur de Chatons
Toute aide sera appréciée pls.
- Je suis sûr que vous avez un imbriquée pile avec qui. Affichage de l'ensemble de la pile peut aider
- Double Possible de Hibernate : Ne pas modifier la référence à la collection cascade="all-delete-orphan":
Vous devez vous connecter pour publier un commentaire.
Vous devez faire la distinction entre les situations lorsque vous appelez
setKittens()
afin de remplacer le contenu de la collection, et quand les appels à HibernatesetKittens()
pour initialiser la propriété. Je suppose que vous avez maintenant l'NullPointerException
dans ce dernier cas, depuisthis.kittens
estnull
. Si oui, vous pouvez faire ceci:J'ai eu le même problème. Dans mon cas, le problème est, que j'ai, par erreur, au lieu de
update(Entinty e)
appelésave(Entity e)
et a obtenu cette erreur.Avez-vous vérifié si la variable chatons est instancié?
Peut-être il peut être null et un NullPointerException est provoqués.
Vous pouvez essayer de déboguer à l'intérieur de la setKittens trop.
Je n'ai jamais utilisé hibernate, xml, seules les annotations. Donc désolé si j'ai dit quelque chose de stupide.
vous devriez envisager d'utiliser merge() au lieu d'utiliser la mise à jour();
Et d'ajouter "orphanRemoval = true" à "un à plusieurs" de la relation comme ceci:
et l'utilisation