2010-01-26 5 views
1

У меня следующий график:критерии запроса с ограничением через объединенный подкласса проблем

OrderLine 
    OrderLineExtension 
     OrderLineExtensionA 
     OrderLineExtensionB 
     OrderLineExtensionC 

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

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

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

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

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

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

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

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

ответ

0

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

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