Атрибут отображения NHibernate fetch="join" не работает

Составление словаря с 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 ответа

Решение

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

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

Другие вопросы по тегам