У меня ниже классовLEFT OUTER JOIN в Hibernate Наследование
@Inheritance(strategy=InheritanceType.JOINED)
Class A{
private long a_id;
private C C;
}
Class B extends A{
private D d;
}
Class C{
private long c_id;
}
Class D{
private long d_id;
private Set<B> bs;
}
Здесь класса В расширяет класс А. Попытка запроса, как показано ниже
Criterion criterion = Restrictions.and(Restrictions.eq(
"b.c", c_instance));
Criteria c = session.createCriteria(D.class, "d")
c.createAlias("bs", "b",JoinType.LEFT_OUTER_JOIN,criterion);
c.createAlias("bs.c","c")
Выход запроса:
select d.d_id from D d left outer join B bs on d.d_id=bs.d_id and bs.c_id=2489 inner join A on bs.a_id=A.a_id inner join C A.c_id=C.c_id
Im получает сообщение об ошибке, поскольку c_id - unknonwn column в B. Хотя таблица B doe sn't имеет столбец c_id, который имеет его родительская таблица. Как я могу написать запрос для достижения левого внешнего соединения здесь?
Да, с не является свойство класса B, но он может наследовать от класса A, которого не бывает. Это мой вопрос –