Ignorieren FetchType.EIFRIG in einer Beziehung

Ich habe ein problem mit EAGERs Beziehungen in einer großen Anwendung. Einige Entitäten, die in dieser Anwendung haben EAGER Assoziationen mit anderen Entitäten. Diese "Gift" in bestimmten Funktionen.

Nun mein team braucht, um dies zu optimieren, Funktionalitäten, aber können wir nicht ändern, den fetch-Typ zu FAUL, weil wir Sie brauchen würden, um die Umgestaltung der gesamten Anwendung.

So, meine Frage: gibt es einen Weg, um eine bestimmte Abfrage zu ignorieren die EAGERs Assoziationen in meinem zurückgegebene Entität?

Beispiel: wenn ein ich habe diese Entität Person, ich möchte nicht die Adresse-Liste, wenn ich eine Abfrage, eine Person zu finden.

@Entity
public class Person {

  @Column
  private String name;

  @OneToMany(fetch=FetchType.EAGER)
  private List<String> address;

}

Query query = EntityManager.createQuery("FROM Person person");
//list of person without the address list! But how???
List<Person> resultList = query.getResultList();

Dank!

Aktualisiert

Der einzige Weg, fand ich nicht wieder die Person, wenn nur einige Felder der Entität. Aber ich möchte eine Lösung finden, dass ich zurückkehren kann, die Entität (in meinem Beispiel die Person Person).

Ich denke, wenn ist möglich, Karte die gleiche Tabelle zweimal in den Ruhezustand versetzt werden. Auf diese Weise kann ich die Zuweisung des gleichen Tabelle, ohne die EIFRIGEN Verbände. Dies wird mir helfen, in wenigen Fällen...

  • stackoverflow.com/questions/10997321/...
  • Vielleicht sind Sie besser dran, refactoring. In der Regel BEGIERIG, würde nur verwendet werden für triviale Beziehungen, wenn, die. Besser, alles, was FAUL und dann Holen Sie sich die extra, wenn Sie wirklich wissen, Sie es brauchen.
  • Hi @Nikolaus! Es ist die bessere Lösung. Leider ist es nicht möglich, umgestalten, alle Entitäten, da es eine Menge von Auswirkungen in der Anwendung.
InformationsquelleAutor Dherik | 2013-07-25
Schreibe einen Kommentar