Рассмотрим класс Operation
, и его 3 подкласса:Алиас для свойств, которые существуют только в подклассах (Hibernate Criteria)
class Operation {}
class OpA extends Operation { }
class OpB extends Operation { Account account; }
class OpC extends Operation { Account account; }
Только OpB
и OpC
есть поле под названием account
.
Я хочу запросить для account
собственности:
session.createCriteria(Operation.class)
.add(Restrictions.eq("account", account))
.list();
Это работает. Hibernate игнорирует тот факт, что оба Operation
и OpA
не имеют поля под названием account
и возвращают правильные результаты для OpB
и OpC
.
Однако, теперь я также хочу запросить у владельца владельца и заказать его. Затем я создаю псевдоним _account
для account
:
session.createCriteria(Operation.class)
.add(Restrictions.eq("account", account))
.createAlias("account", "_account")
.add(Restrictions.eq("_account.owner", "John"))
.addOrder(Order.asc("_account.owner"))
.list();
Это терпит неудачу. Есть 2 отдельные таблицы для учетной записи (от OpB
и OpC
), так Hibernate жалуется:
Not unique table/alias: 'account1_'
Мой вопрос: Как я могу запросить как счета и владельца счета, не используя только Criteria
(не SQL, HQL) самым простым способом?
Что бы желательно SQL выглядеть? –
@Pedrag: Извините, я понятия не имею. – MarcG