Frage

Ich habe ein Objekt, das eine Reihe von Objekten zu haben, sehr einfach abgebildet wird. Was jedoch wirklich tun will ich auf dieser Abbildung einige Kriterien setzen. Hier ist die aktuelle Zuordnung:

    <set name="ops" inverse="true" cascade="all, delete-orphan">
        <key column="cityblock_id" on-delete="cascade"/>
        <one-to-many class="com.tamedtornado.data.Operation"/>
    </set>

Nun, anstatt nur alle zugehörigen ops bekommen, möchte ich ops nur erhalten, die nicht abgeschlossen haben, oder haben oder was auch immer. Die Hibernate docs sind sehr ruhig auf das, obwohl einige alte Forum-Beiträge haben mich ein wenig gezeigt. Sie können offenbar eine SQL-Abfrage-Tag verwenden, aber das ist auch nicht das, was ich tun möchte.

Gibt es trotzdem, dies mit einer HQL-Abfrage zu tun? Ich möchte nur die Ergebnisse mit einer einfachen Abfrage verengen und ein paar Sammlung Karten haben, wie active_ops und completed_ops, etc.

Cheers, Jason

War es hilfreich?

Lösung

Unter 6.2. Sammlung Mappings in der Hibernate docs Sie werden feststellen, dass Sie eine WHERE-Klausel auf jeder Sammlung Mapping verwenden können:

where (optional) geben Sie eine beliebige SQL-WHERE-Bedingung verwendet werden, wenn das Abrufen oder Entfernen der Sammlung (nützlich, wenn die Sammlung nur eine Teilmenge der verfügbaren Daten enthalten sollte)

Sie haben gesagt, dass Sie eine HQL-Abfrage verwenden möchten, aber ich glaube nicht, das ist möglich. Aber wie Sie nur eine einfache angeben müssen WHERE-Klausel in Ihrem Mapping es nicht wirklich viel Unterschied, zwischen HQL und „echten“ SQL.

Andere Tipps

Ich bin nicht sicher, ob ich Ihre Frage klar zu verstehen, aber es scheint, wie Sie eine where-Klausel in der SQL-Abfrage verwenden müssen

Es sollte möglich sein, eine where-Klausel in Ihrem HQL zu verwenden oder die Kriterien api in Hibernate verwenden, um die gewünschten Ergebnisse zu erzielen:

Angenommen, Sie ein Feld namens Status „aktiv“ oder „abgeschlossen“ Ihre HQL sollte wie folgt aussehen:

from ops where status="active"

oder wenn mit den Kriterien api:

List activeOperations = sess.createCriteria(Operation.class)
    .add( Restrictions.equals("status", "active") )
    .list();

Die Kapitel 14 und 15 des Hibernate Tutorial ein wenig darüber reden: http://www.hibernate.org/hib_docs/v3/ Referenz / en / html / index.html

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