Запрос критериев с ограничением на объединенную задачу подкласса - PullRequest
1 голос
/ 26 января 2010

У меня есть следующий график:

OrderLine
    OrderLineExtension
        OrderLineExtensionA
        OrderLineExtensionB
        OrderLineExtensionC

OrderLine содержит набор OrderLineExtension.
OrderLineExtension определяется как: @Inheritance (стратегии = InheritanceType.JOINED) и помечается как объект и является абстрактным

В базе данных создается таблица для каждого из этих классов в иерархии.

Я пытаюсь выполнить запрос, в котором имя элемента на OrderLine равно "item", а где orderReferenceNumber "orderRef" в OrderLineExtensionA.

Я не уверен, как перейти от OrderLine к OrderLineExtensionA, так как отсутствует ссылка на Java от OrderLineExtension к OrderLineExtensionA.

Я до сих пор получил это, которое, конечно, не работает.

filter=DetachedCriteria.forClass(OrderLine.class);
    .add(Restrictions.eq("item", "item"));
    .createCriteria("orderLineExtension")
        .add(Restrictions.eq("orderReferenceNumber", "orderRef"));

Это терпит неудачу, поскольку hibernate жалуется, что не может найти orderReferenceNumber в классе orderLineExtension, который имеет значение true, как и в orderLineExtensionA. Но как мне перейти к расширению? Я не могу вложить другой createCriteria, поскольку в суперклассе нет ссылки на подкласс.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 01 февраля 2010

Ой, не волнуйся. Эта проблема возникает из-за того, что я не осознавал, что коллега создал одно и то же поле в каждом присоединенном подклассе. Hibernate просто перейдет к первому подклассу для загрузки свойства. Вот почему я получил неправильный экземпляр обратно.

Теперь мы их переименовали, все отлично работает. Хотя у меня некоторое время царапалась голова.

...