Frage

Ich bin mit Eclipse als JPA-Provider. Ferner bin ich mit der folgenden TABLE_PER_CLASS Vererbungsstruktur

@javax.persistence.Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@NamedQueries({
    @NamedQuery(name=Parent.QUERY_FIND_ALL, query="SELECT p FROM Parent p")
})
public class Parent {
        // the class code follows here
}

@javax.persistence.Entity 
@NamedQueries({
    @NamedQuery(name=Child.QUERY_FIND_ALL, query="SELECT c FROM Child c")
})

public class Child extends Parent {
        // the class code follows here
}

Das Problem ist jetzt, dass ich nur die Einträge der Elternklasse erhalten möchten. Aber mit der benannten Abfrage „SELECT p FROM Eltern p“ auch alle Einträge aus der untergeordneten Tabelle zurückgegeben.

Die Auswahl oder Code finden sich wie folgt:

public List findWithNamedQuery(String query) {
        return em.createNamedQuery(query).getResultList();
}

Dabei Abfrage das heißt, die "SELECT p FROM Eltern p".

Wie kann ich nur erhalten wirklich die übergeordneten Einträge und nicht alle Einträge dieser inheritacne Hierarchie?

Kurz gesagt: Wie kann ich lassen alle Kindereinträge unberührt und geben nur die übergeordneten Einträge

?

EDIT 1:
Ich bin mit Eclipselink 2.0.1, aber jedes Mal, wenn ich axtavt-Lösung über den Ausdruck des Typs versuchen, ich die folgende Fehlermeldung erhalten:

"Invalid Type Expression on [my.domain.Parent].  The class does not have a descriptor, or a descriptor that does not use inheritance or uses a ClassExctractor for inheritance".

Ich habe auch auf die neueste stabile Version 2.1.1 von Eclipse aktualisiert, aber nicht das Problem beheben.

War es hilfreich?

Lösung 2

Der Typ Ausdruck in Kombination mit TABLE_PER_CLASS Erbe doesn‘t Arbeit unter Eclipse 2.1.1, dies scheint ein Fehler zu sein.

Siehe auch die Antwort auf JPA 2.0: Ausnahme TYPE Ausdruck

Andere Tipps

Wenn Ihre Version von Eclipselink unterstützt JPA 2.0, können Sie schreiben

SELECT p FROM Parent p WHERE TYPE(p) = Parent
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top