Гибернация: Выполнить запрос критериев с помощью суб-выбора И левого-внешнего соединения? - PullRequest
1 голос
/ 16 апреля 2010

Могу ли я выполнить запрос критерия с помощью суб-выбора И левого-внешнего соединения?

Например, у меня есть A 1-много B 1-много C.

С помощью Criteria.createAlias ​​("b", "b", Criteria.LEFT_JOIN) я могу выполнить Left Outer join.

С помощью Criteria.setFetchMode ("b", org.hibernate .FetchMode.DEFAULT) я могу выполнить соединение со стратегией выборки по умолчанию. Я предполагаю, что достаточно установить @ org.hibernate.annotations .FetchMode.SUBSELECT в A.B и B.C (достаточно?).

Вопрос 1: Почему org.hibernate .FetchMode не имеет опции SUBSELECT, тогда как org.hibernate.annotations .FetchMode имеет?

Вопрос 2: Могу ли я выполнить запрос Criteria с помощью Sub-Select AND Left-Outer join?

Ответы [ 2 ]

2 голосов
/ 09 августа 2010

Критерии и org.hibernate.FetchMode.SELECT ничего не делают. Единственный вариант для критериев - org.hibernate.FetchMode.JOIN. Я выполняю ленивую инициализацию результатов Criteria вручную:

for (Entity e : result) {
 Hibernate.initizalize(e.getProperty());
}
0 голосов
/ 16 апреля 2010

org.hibernate.FetchMode имеет такую ​​же опцию под другим именем, SELECT.

...