у меня есть три класса говорят A
, B
и C
, как показано ниже:Как предотвратить объединение таблиц в жаждущих отношений при использовании критериев
Класс A
имеет OneToOne
отношение с B
:
Class A {
@OneToOne
B b;
}
И B
имеет нетерпеливое отношение с C
.
Class B {
@ManyToOne(fetch=fetchType.EAGER)
C c;
}
Я хочу иметь критерии (на A
) и присоединиться к нему с B
, чтобы получить некоторые данные из этих двух таблиц. Но когда я использую createAlias
(или любые другие конкретные соединения), то также присоединяется таблица C
. (По-видимому, из-за нетерпеливого отношения между B
и C
). Что-то вроде этого:
Criteria aCrit = session.createCriteria(A.class, "a");
aCrit.createAlias("a.b", "b");
aCrit.setProjection(Projections.property("b.name");
aCrit.list();
Вопрос заключается в том, что у меня нет необходимости C
, я не хочу, чтобы присоединиться. Как я могу вручную предотвратить такое действие?
Спасибо. Я попробую и дам вам знать результат. Интересно, почему не использовать 'FetchMode.LAZY' сам? –
Константа перечисления 'FetchMode.LAZY' устарела: http://docs.jboss.org/hibernate/orm/4.1/javadocs/org/hibernate/FetchMode.html – dcernahoschi