JPA query zum abrufen aller Knoten in einem Baum

Habe ich Baum-Strukturen gespeichert sind, in eine DB-Tabelle. Die Tabelle speichern kann, mehrere Bäume. Ich brauche eine Abfrage, die zurückkehren wird, werden alle Knoten in einer single Baum. Ich habe die folgenden Seiten als Mittel, sondern die Abfragen in Ihnen wird die Last aller Knoten für alle Bäume in PersistenceContext (nicht, dass das laden der ganzen Tabelle?). Ich will nicht zu tun, dass ich nur laden wollen einen Baum. Wie kann ich das erreichen??

Ich bin mit JPA 2, Hibernate als provider.

OpenJPA 1.2.x wählen Sie Baumstruktur mit JPQL

http://www.tikalk.com/java/load-a-tree-with-jpa-and-hibernate#comment-1821

[UPDATE] auf der Grundlage einer Anregung von @bennidi, Frage ich mich, wenn ich etwas wie dieses:

@Entity
public class Node {

    private String name;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "rootId")
    private Node root;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "parentId")
    private Node parent;

    @OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @OrderBy("name")
    private List<Node> children = new LinkedList<Node>();
}

JPQL-Abfrage:

select distinct n from Node n left join fetch n.children where n.rootId = ROOT_ID

Ich habe aber eine Frage, sollte ich eine zweite Tabelle zur Aufrechterhaltung der Eltern-Kind-Beziehungen wie in dieser Artikel, oder wird es in Ordnung sein, wenn ich nur eine auf sich selbst verweisende Tabelle. Mit dem ehemaligen zu verlangen scheint ein bisschen mehr Pflege und wahrscheinlich ein wenig komplexer Abfragen. Ist es das Wert? Ich bin mir nicht sicher, welche Probleme die Artikel Adressierung.

  • dies ist eine großartige Idee, die Sie mir hier!! hast du eine Möglichkeit gefunden werden, die vice Versa??
  • und für die info alle fetchTypes du verwendest hier sind Standardwerte! Sie könnten Sie entfernen, und Sie alle wären die gleichen
InformationsquelleAutor citress | 2012-04-12
Schreibe einen Kommentar