Hibernate - HQL zu Holen, eine Sammlung von Unidirektionale OneToMany-Beziehung

Ich habe eine Klasse mit einer unidirektionalen one to many Beziehung wie folgt:

public class Order {
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(name="order_item", joinColumns={@JoinColumn(name="order_id")}, inverseJoinColumns={@JoinColumn(name="item_id")})
    public Set<Item> getItems() {
        return items;
    }
} 

Normalerweise immer der Inhalt der Bestellung ist unkompliziert:

List<Item> items = order.getItems();

Aber aus irgendeinem Grund, vielleicht möchte ich meine filter die Ergebnisse in einigen Weg und Hole nur Teil einer Sammlung von Elementen, wie alle Elemente, die mehr als einen bestimmten Preis, die unter einem bestimmten Lager etc in der Schnellste Weg möglich (Nicht Rückgabe dann alle dann danach filtern). Dazu würde ich eine HQL-query zum abrufen der Elemente für eine bestimmte Reihenfolge und fügen Sie ein paar mehr Sachen in meine where-Klausel oder auf meinem query-Objekt.

Intuitiv würde ich wollen, dass diese Verhalten (völlig zu Unrecht):

SELECT jointable.ITEM from order_item as jointable inner join jointable.order where order = :order

Aber natürlich ist dies falsch, wie HQL funktioniert in Bezug auf die zugeordneten Entitäten, so dass ich nicht verwenden können, die join-Tabelle in der Abfrage. Also, was ist der richtige Weg, dies zu tun?

Edit:

Habe ich die Antwort gefunden auf diese Frage, ich möchte folgende Abfrage:

Select o.items from Order o where o = ?

Dies ermöglicht es mir zu Holen, die Auflistung der Elemente für eine Bestellung, ohne dass eine bidirektionale Beziehung. Ich bin jetzt aber verwirrt, auf der zweiten Stufe von dieser Frage, die wie filter die Ergebnisse dieser Erhebung, die am meisten einfache Beispiel:

Select o.items from Order o where o = ? order by o.items.somenumberfield asc

Gibt illegalen Versuch zu dereferenzieren Sammlung, so, wie würde ich meine filter posten?

Edit:

Den ticket-Lösung ist tatsächlich korrekt, habe ich falsch verstanden, die Lösung ursprünglich.

InformationsquelleAutor mogronalol | 2011-11-24
Schreibe einen Kommentar