Domanda

Ho un oggetto mappato per avere una serie di oggetti, molto semplice. Tuttavia, quello che voglio davvero fare è mettere alcuni criteri su quella mappatura. Ecco la mappatura attuale:

    <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>

Ora, invece di ottenere solo tutte le operazioni associate, voglio solo ottenere operazioni che non sono state completate, o che hanno, o altro. I documenti di Hibernate sono molto tranquilli su questo, anche se alcuni vecchi post del forum mi hanno mostrato un po '. Apparentemente puoi usare un tag sql-query, ma non è quello che voglio fare.

Esiste un modo per farlo con una query HQL? Voglio solo restringere i risultati con una semplice query e avere alcune mappe di raccolta, come active_ops e completato_ops, ecc.

Saluti, Jason

È stato utile?

Soluzione

In 6.2. Mapping di raccolta nei documenti di Hibernate scoprirai che puoi utilizzare una clausola WHERE su qualsiasi mapping di raccolta:

dove (facoltativo) specifica una condizione WHERE SQL arbitraria da utilizzare durante il recupero o la rimozione della raccolta (utile se la raccolta deve contenere solo un sottoinsieme dei dati disponibili)

Hai detto di voler utilizzare una query HQL ma non credo sia possibile. Ma dato che devi solo specificare una semplice clausola WHERE nella tua mappatura, non c'è molta differenza, tra HQL e "reale". SQL.

Altri suggerimenti

Non sono sicuro di aver compreso chiaramente la tua domanda, ma sembra che tu debba usare una clausola where nella tua query SQL

Dovresti essere in grado di utilizzare una clausola where nel tuo HQL o utilizzare i criteri api in ibernazione per ottenere i risultati desiderati:

Supponendo che tu abbia un campo chiamato status per " attivo " o "completato" il tuo HQL dovrebbe assomigliare a questo:

from ops where status="active"

o se si utilizzano i criteri api:

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

I capitoli 14 e 15 del tutorial di ibernazione parlano un po 'di questo: http://www.hibernate.org/hib_docs/v3/ di riferimento / it / html / index.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top