У меня есть простой запрос, который хорошо сработал, теперь я изменил кое-что в своем коде на:
(hibernate.cfg.xml)
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="hibernate.current_session_context_class">thread</property>
и следующий код:
public UserEn findByIDFetch(Long id, String... fetches) {
beginTransaction();
DetachedCriteria dc = DetachedCriteria.forClass(UserEn.class);
for (String fetch : fetches) {
dc.createAlias(fetch, fetch, JoinType.INNER_JOIN);
}
dc.add(Restrictions.eq("id", id));
UserEn result = (UserEn) dc.getExecutableCriteria(getSession()).uniqueResult();
commitTransaction();
return result;
}
после фиксации у объекта результата не загружен список (который поступает из fetches
)
если я делаю result.getAnyList().size();
перед фиксацией, он также загружается, если я использую HQL
, он работает отлично. (но это не то, как он должен работать (пусть он открывается и загружается, когда используется), createAlias должен работать нормально, как всегда)
Похоже, что createAlias DetachedCriteria не получает заданный путь (в данном случае characterEnList
)
@EDIT
Я обнаружил, что если я использую setFetchMode
в желаемом пути (в данном случае characterEnList
), выборка работает, но если я использую createAlias
(как обычно), она просто перестает работать, я не Не знаю как, возможно, ошибка спящего режима или что-то в этом роде, в любом случае я подожду, пока кто-нибудь ответит, может быть, у кого-то была такая же проблема ...