Hibernate Criteria runtime class - PullRequest
       3

Hibernate Criteria runtime class

0 голосов
/ 23 сентября 2011

Это моя иерархия:

// Table a
class A {}

// Table(" b
class B extends A {}

// Table my_class
class MyClass {

    A a;
}

Я хочу получить все MyClass объекты из базы данных с отношением к B, но не к A.

B - это joined-subclass (расширение таблицы a по id).

Моя идея была чем-то:

Criteria criteria = session.createCriteria(MyClass.class);
criteria.add(Restrictions.eq("a.class", B.class);

Но выдает ошибку:

could not resolve property: a.class of a.b.MyClass

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

Привет.

Udo.

1 Ответ

2 голосов
/ 23 сентября 2011

Я обычно пишу DetachedCriteria, который выбирает все B и фильтрует MyClass, где A в AllB:

DetachedCriteria allBs = DetachedCriteria
  .forClass(B.class)
  .setProjection( Projections.property("id") );

Criteria  criteria = session.createCriteria(MyClass.class)
  .add(Subqueries.In("a", allBs);

(Могут быть ошибки, я не программист java.)

Создает что-то вроде:

select ...
from MyClass
where A in (select id from A inner join B on ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...