Die Hibernate FetchMode verursachen Sammlungen zu faul geladen?
Fragte ich einen dieser Frage auf den Hibernate-Foren, aber nicht eine vollständige Antwort, so dass ich dachte, ich würde umbuchen es hier. Hier ist die ursprüngliche Frage-thread:
http://forum.hibernate.org/viewtopic.php?f=1&t=1008243&p=2438963#p2438963
Kurz gesagt, ich habe eine benutzerdefinierte HQL-Abfrage, die verbindet zwei völlig unabhängig Tische, und ich versuche zu verhindern, dass der "O(N+1) wählt" problem durch deaktivieren Sie das laden der damit verbundenen Sammlungen, die es in meiner Hibernate-POJOs abgebildet.
Anscheinend kann ich mit Hibernate fetch-profile für diese, aber es gibt einen Haken. Hier ist, was Hibernate ist FetchMode.java sagt:
/**
* Fetch using an outer join. Equivalent to <tt>fetch="join"</tt>.
*/
public static final FetchMode JOIN = new FetchMode("JOIN");
/**
* Fetch eagerly, using a separate select. Equivalent to
* <tt>fetch="select"</tt>.
*/
public static final FetchMode SELECT = new FetchMode("SELECT");
/**
* Fetch lazily. Equivalent to <tt>outer-join="false"</tt>.
* @deprecated use <tt>FetchMode.SELECT</tt>
*/
public static final FetchMode LAZY = SELECT;
So, "FAUL", ist nicht wirklich faul, es ist einfach "WÄHLEN", was genau das ist, was ich versuche zu vermeiden.
Gibt es eine fetch-Modus, der verhindert, dass die Sammlungen geladen werden ? Wenn nicht, gibt es eine andere Möglichkeit zum deaktivieren des Ladens von Sammlungen, die im Laufe eines bestimmten HQL-Abfrage ?
Merke ich, dass der konventionelle Weg, dies zu erreichen ist die Verwendung von Kriterien Abfragen, aber ich brauche eine Verknüpfung auf eine beliebige Eigenschaft, und soweit ich sagen kann, es gibt keine Kriterien dafür.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, ich glaube, dass das Standardverhalten von hibernate ist die Verwendung von lazy loading. So überprüfen Sie, ob es nicht bereits der Fall ist.
Dann, ich glaube, Sie verwechselt haben Sie die Kommentare in der Dokumentation und der
SELECT
sollte wirklich ein fauler Holen (wenn Sie überprüfen der Dokumentation die neueste version von hibernate, die 'Spannung' Wort entfernt).SELECT
verursacht ein faulen zu Holen.