Hiberner un à zéro ou un mappage
Je suis en train de carte de un à zéro "ou une" relation de mise en veille prolongée. Je pense que j'ai peut-être trouvé un moyen à l'aide d'un plusieurs-à-un.
class A {
private B b;
//... getters and setters
}
class B {
private A a;
}
Classe Une cartographie précise:
<many-to-one name="b" class="B"
insert="false" update="false"
column="id" unique="true"/>
et de Classe B de la cartographie précise:
<one-to-one name="a" class="A" constrained="true"/>
Ce que je voudrais, c'est pour b de la valeur null lorsque l'absence de correspondance ligne B a été trouvé dans la base de données. Donc, je peux le faire (en classe):
if (b == null)
Cependant, il semble que b n'est jamais null.
Ce que je peux faire à ce sujet?
source d'informationauteur Boden
Vous devez vous connecter pour publier un commentaire.
Comme Boden a dit, la réponse est à ajouter
not-found="ignore"
à plusieurs-à-une déclaration en A. Faire cela avec l'annotation:Dans La Classe A:
de la Classe B:
La réponse a été d'ajouter introuvable="ignorer" pour plusieurs-à-une instruction d'Un:
J'ai essayé de simplement ajouter de lazy="false" à B comme Rob H recommandé, mais qui a abouti à un HibernateObjectRetrievalFailureException chaque fois que j'ai chargé Un qui n'avait pas de B.
Voir ce fil pour plus d'informations:
https://forum.hibernate.org/viewtopic.php?p=2269784&sid=5e1cba6e2698ba4a548288bd2fd3ca4e
Essayez de définir lazy="false" sur le plusieurs-à-un élément. Qui devrait de la force Hibernate pour essayer de récupérer l'association ("B") lorsque le premier objet ("Un") est chargé. La propriété en "A" sera initialisé avec un véritable exemple de "B" ou null.