HQL для поиска начального индекса объектов в предопределенном порядке? - PullRequest
0 голосов
/ 25 февраля 2009

Используя HQL, я хотел бы найти начальный индекс секвенированных объектов.

Например, если у меня есть следующие постоянные классы:

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

и я сохраняю следующие слова в объект предложения:

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

Я хотел бы найти «корову» и вернуть 0 и 7. Поиск «коровы прыгнул» вернул бы только 0.

Мой текущий подход - это итеративный поиск - выполните запрос индекса первого слова, а затем используйте этот индекс, чтобы увидеть, являются ли индексы следующих слов такими, какими я хочу их видеть. Это хороший подход или есть способ сделать это все в одном запросе?

1 Ответ

0 голосов
/ 25 февраля 2009

нет ничего плохого в этом подходе. итеративные запросы иногда неизбежны.

существуют базы данных, которые возвращают номер строки, и вы можете использовать его для составления сложного запроса. я не думаю, что Hibernate имеет поддержку для этого. (я знаю о oracle, postgre> = 8.4), скорее всего, производительность будет хуже, чем при выполнении двух запросов.

просто убедитесь, что вы не столкнетесь с бесконечными запросами, или количество запросов будет расти линейно с размером ввода или размером существующих данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...