JPQL Abfrage mit WHERE auf geschachtelte Felder
Ich habe ein java-entity-Klasse UserBean mit einer Liste von Ereignissen:
@OneToMany
private List<EventBean> events;
EventBean hat die Date-variable:
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date eventDate;
Nun in der UserBean ich möchte erstellen Sie eine NamedQuery, dass alle Daten zurückgibt, die fallen in einem bestimmten Bereich:
@NamedQuery(name="User.findEventsWithinDates",
query="SELECT u.events FROM UserBean u WHERE u.name = :name AND u.events.eventDate > :startDate AND u.events.eventDate < :endDate")
Obige Abfrage nicht kompiliert wenn. Ich bekomme diese Fehlermeldung:
The state field path 'u.events.eventDate' cannot be resolved to a valid type.
Übrigens, ich benutze EclipseLink version 2.5.0.v20130507-3faac2b.
Was kann ich tun, damit diese Abfrage funktioniert? Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Pfad
u.events.eventDate
ist ein illegales Konstrukt in JPQL, denn es ist nicht erlaubt das navigieren über eine Sammlung geschätzt Pfad-Ausdruck. In diesem Fallu.events
ist eine Sammlung geschätzt Pfad-Ausdruck. In JPA 2.0-Spezifikation dies ist gesagt mit folgenden Worten:Dieses problem kann gelöst werden durch die Verwendung von JOIN: