Атрибут отображения NHibernate fetch = "join" не работает - PullRequest
4 голосов
/ 17 марта 2009

Отображение словаря с помощью NH. Декларация выглядит следующим образом:

<hibernate-mapping ...
    <map 
        name="CostsByRole" 
        table="JobAccountingSnapshotCosts"
        lazy="false" 
        fetch="join" 
        access="nosetter.camelcase-underscore">
            <key column="SnapshotId" />
            <index column="RoleCode" type="String" />
            <element column="Amount" type="Decimal" />
    </map>
</hibernate-mapping>

Я ожидаю, что будет сгенерирован один запрос SQL, но вместо этого я получаю два: выбор для фактического объекта, а затем выбор для содержимого словаря.

Есть идеи?

Ответы [ 2 ]

6 голосов
/ 21 января 2010

HQL-запросы не учитывают значения, заданные для fetch в отображении. Вы должны указывать их исключительно в каждом HQL-запросе. Его якобы по замыслу. Значение атрибутов выборки используется только запросами Criteria и Load / Get.

1 голос
/ 17 марта 2009

Предполагая, что это не опечатка при отправке, проблема, вероятно, будет частью join="fetch" в вашем отображении. Это должно быть fetch="join", и поскольку по умолчанию для fetch установлено значение "select", это приведет к вашей проблеме последовательного выбора.

...