2009-02-25 9 views
0

En utilisant HQL, je voudrais rechercher l'index de départ des objets séquencés.HQL pour trouver l'index de départ des objets dans un ordre prédéfini?

Par exemple, si je donne les résultats suivants: cours persisté

<class name="Word"> 

    <id name="id" type="int"> 
     <meta attribute="scope-set">protected</meta> 
     <generator class="native"/> 
    </id> 

    <many-to-one name="sentence" class="Sentence"/> 

    <property name="word" type="string"/> 

    <property name="num" type="integer"/> 

</class> 

<class name="Sentence"> 

    <id name="id" type="int"> 
     <meta attribute="scope-set">protected</meta> 
     <generator class="native"/> 
    </id> 

    <set name="words" lazy="true"> 
     <one-to-many class="Word"/> 
    </set> 

</class> 

et je persiste les suivantes Wo rds dans un objet de la phrase:

WORD NUM 
---------- 
the 0 
cow 1 
jumped 2 
over 3 
the 4 
moon 5 
but 6 
the 7 
cow 8 
forgot 9 
her 10 
bell 11 

Je voudrais chercher « la vache », et revenir 0 et 7. Une recherche de « la vache a sauté » ne reviendrait 0.

Mon actuelle L'approche est une recherche itérative - faites une requête pour l'index du premier mot, puis utilisez cet index pour voir si les index des mots suivants sont ce que je veux qu'ils soient. Est-ce une bonne approche ou existe-t-il un moyen de le faire tout en une requête?

Répondre

0

Il n'y a rien de mal à cette approche. Les requêtes itératives sont parfois inévitables.

Il existe des bases de données qui renvoient le numéro de ligne et vous pourriez peut-être l'utiliser pour construire une requête compliquée. Je ne pense pas que Hibernate a un support pour cela. (je sais d'oracle, postgre> = 8.4) très probablement la performance sera pire que de faire deux requêtes. Assurez-vous simplement que vous ne rencontrerez pas de requêtes infinies ou que le nombre de requêtes augmente linéairement avec la taille de l'entrée ou la taille des données existantes.