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.

InformationsquelleAutor Bugmaster | 2010-12-04
Schreibe einen Kommentar