Frage

Mit Hibernate Ich bin es gewohnt, so etwas wie die folgende tun:

select n from NetworkElement n join fetch n.site s where s.active is true

Allerdings klagt Eclipse viel über diese:

Caused by: Exception [EclipseLink-8024] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.JPQLException Exception Description: Syntax error parsing the query [select n from NetworkElement n join fetch n.site s], line 1, column 49: syntax error at [s].

(Die Abfrage auf dem Stapel unterscheidet sich von dem oben, aber das Ergebnis ist das gleiche)

Ich habe verschiedene Kombinationen ausprobiert, von denen keines gearbeitet:

select n from NetworkElement n join fetch n.site where n.site.active is true
select n from NetworkElement n join fetch n.site as site where site.active is true

Ich habe auch versucht, in meinem Domain-Modell zu einem anderen Unternehmen wechseln, zu ahnen, dass vielleicht meine Zuordnung nicht korrekt ist. Dennoch das gleiche Problem.

Könnte es sein, dass ich nur diese mit einem Abfrage-Hinweis erreichen kann? Ich möchte nicht, das zu tun.

By the way, ich bin mit EcliseLink wie mit Netbeans ausgeliefert 6.8 und Glassfish v3.

ich Hilfe schätzen würde!

Rodrigo

War es hilfreich?

Lösung

Das Hauptproblem ist, dass die JPQL Syntax nicht für Aliasing läßt holen verbindet und deshalb Eclipseabfragehinweise für diese Funktion verwendet. Es ist eine Erweiterung Anfrage hinzufügen Aliasing Fetches direkt im JPQL beitreten und wenn Sie es für sie bitte Abstimmung abgeschlossen sehen möchten. ( https://bugs.eclipse.org/bugs/show_bug.cgi?id = 293.775 ).

- Gordon Yorke

Andere Tipps

Nun, es scheint, dass man alias nicht erlaubt ist, ein in JPQL beitreten Abruf, ja .. Es ist mit Hibernate funktioniert, weil es Aliasing durch HQL unterstützt, und Sie sind mit Ausgabe HQL zu einem JPA Query-Objekt erlaubt.

Deshalb hatte ich keine andere Wahl, als Schalter benannten Abfragen mit Abfragehinweisen. Ich weiß wirklich nicht, wie Abfragen mit Anmerkungen erklärt wegen der hohen Ausführlichkeit auf den Entitätsklassen, so dass ich eine orm.xml Datei in das Persistenzeinheit des Gefäß gegeben, und tat das folgende:

<!-- Fetch network elements -->
<named-query name="fetchNetworkElements">
    <query>select n from NetworkElement n</query>
    <lock-mode>NONE</lock-mode>
    <hint name="eclipselink.join-fetch" value="n.site" />
    <hint name="eclipselink.join-fetch" value="n.site.area" />
</named-query>

Hope dies gibt einen Hinweis auf jemand mit den gleichen Unzulänglichkeiten des rohen JPQL kämpfen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top