Настройка В спящем режиме Критерии - Добавляющие условия к левому соединению

Я должен смочь сделать следующее:

Выберите * из Table1, оставленного соединение Table2 на id1 = id2 И i1 =?

Будьте в спящем режиме критерии не позволяют должными быть указывать i1 =? часть.

Существующий код использует, в спящем режиме критерии, и это было бы огромное, осуществляют рефакторинг для выгрузки для HQL

У кого-либо есть какие-либо подсказки, как я мог реализовать это по-другому или какой-либо способ переопределить Быть в спящем режиме Критерии? Я не настроен против взламывания, в спящем режиме и изменение, но когда я начал рыть его, кажется, существуют слои на слои абстракций. Я никогда не находил точку, где SQL на самом деле сгенерирован...

10
задан 14 May 2010 в 03:59
поделиться

2 ответа

Похоже, это то, что мне нужно...

http://opensource.atlassian.com/projects/hibernate/browse/HHH-2308

т.е.

public Criteria createAlias(String associationPath, String alias, int joinType, Criterion withClause) throws HibernateException;

public Criteria createCriteria(String associationPath, String alias, int joinType, Criterion withClause) throws HibernateException;
13
ответ дан 3 December 2019 в 23:48
поделиться

Вы можете использовать режим Fetch для Join. Это можно сделать следующим образом:

Criteria criteria = session.createCriteria(Table1.class);
criteria.setFetchMode(table2OutputList, FetchMode, JOIN);
criteria.add(Restrictions.eq("i1", i1Value);
return criteria.list();

В этом случае перед выполнением запроса необходимо получить список table2OutputList. Эта статья может дать вам лучшее представление;

0
ответ дан 3 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: