вопрос по Hibernate Criteria API - PullRequest
       11

вопрос по Hibernate Criteria API

0 голосов
/ 24 августа 2011

У меня есть две таблицы A и B:

A columns (ID,NameA,BiD)
B columns (ID,NameB)  

ID ссылается на Bid как внешнее RelationMapping.Вот проблема. Мой объект Hibenate B не получил List, но мой объект Hibernate A получил экземпляр объекта B.

select a.* from A a, B b 
where a.BiD=b.ID

Как я могу выполнить этот запрос в Hibernate Criteria Api?Я надеюсь, что смогу объяснить мою проблему?

Ответы [ 2 ]

0 голосов
/ 24 августа 2011

Вам не нужно присоединяться к классам в запросе. Эта информация находится в файле сопоставления. Если вы загружаете А, то Б тоже загружаются (вероятно, лениво).

Criteria c = session.createCriteria(A.class).list();

Если этот ответ не помог, вы забыли предоставить некоторую информацию о необходимом запросе.

0 голосов
/ 24 августа 2011

Предполагая, что вам нужно найти все экземпляры A, имеющие определенный идентификатор B

Criteria c = session.createCriteria(A.class, "a");
c.add(Restrictions.eq("a.b.id", theIdOfB);
return c.list();

Если бы вам пришлось искать по имени B, а не по идентификатору B, вам понадобится объединение:

Criteria c = session.createCriteria(A.class, "a");
c.createAlias("a.b", "b");
c.add(Restrictions.eq("b.name", theNameOfB);
return c.list();

Как всегда, все это объясняется примерами в справочной документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...