2009-02-25 6 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.

Questions connexes