Hibernate Fremdschlüssel-Mapping?
-
11-09-2019 - |
Frage
Ich habe eine Entität A, die einen Fremdschlüssel der Einheit B hat:
entity A --> id, entity_a_name, foreign_key_entity_B
Wenn ich rufe
return session.createCriteria(EntityA.class).list();
ich die Eigenschaft entityB innerhalb Einheit A als auch. Wie kann ich es faul Last machen, damit es nicht enityB laden, wenn nicht gebraucht?
Lösung
Es ist unklar, aus Ihrer Beschreibung, welche Art von Beziehung mit dir reden, aber wenn es Many-to-One oder One-to-One ist, sind die Dinge nicht so einfach. Wenn A.entityB
NULL-Werte zulässt (nicht optional), dann wird Hibernate die Beziehung, um eifrig Last gezwungen zu sehen, ob die Eigenschaft null ist. Nur durch die Beziehung als nicht-optionale Markierung (in diesem Fall Hibernate übernimmt , dass es nicht null ist, da es ein Fehler anders ist) können Sie es träge machen laden.
Andere Tipps
@ LazyCollection : definiert die lazyness Option auf @ManyToMany und @OneToMany Verbände. LazyCollectionOption kann TRUE (Die Sammlung ist faul und wird geladen, wenn sein Zustand zugegriffen wird), EXTRA (die Sammlung ist faul und alle Operationen werden versuchen, vermeiden, dass die Sammlung Laden, diese ist besonders nützlich für große Sammlungen, wenn alle Laden Elemente ist nicht erforderlich) und FALSE (Verein nicht faul)
@ Fetch : definiert die Abrufstrategie verwendet, um die laden Verband. FetchMode kann SELECT sein (A select ausgelöst wird, wenn die Verband muss geladen werden), Subselect (nur für Sammlungen, verwenden Sie einen subselect Strategie - finden Sie in der Hibernate Referenzdokumentation für Weitere Informationen) oder JOIN (ein SQL JOIN die Zuordnung laden während das Laden der Besitzer juristische Person). BEITRETEN überschreibt alle lazy Attribute (ein als Vergesellschaftung geladen, um ein durch JOIN Strategie kann nicht faul).