У меня есть следующий график:
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, поскольку в суперклассе нет ссылки на подкласс.
Любая помощь будет оценена.