Я пишу поисковый интерфейс, в котором пользователь может выбирать из полей нескольких различных объектов.Это приложение Spring MVC (3.0.5), использующее Hibernate 3
Мой класс DAO должен иметь возможность гибко отвечать на эти запросы.Я хотел бы использовать такой подход:
critAliases = new ArrayList<String>();
...
Session session = (Session) getEntityManager().getDelegate();
crit = session.createCriteria(RootEntity.class);
// selected search options from user
for ( SearchOption opt: searchOptionList ) {
if ( ! critAliases.contains(opt.getAlias()) ) {
crit.addAlias(opt.getEntityName(), opt.getAlias(), opt.getJoinType());
critAliases.add(opt.getAlias());
}
}
Обратите внимание, что я должен отслеживать псевдонимы с переменной экземпляра
List<String> critAliases
в моем классе DAO.
Я бы предпочел спросить экземпляр Criteria, если он уже содержит подкритерии, соответствующие моей строке opt.getAlias ().Интерфейс Criteria предоставляет метод getAlias (), который подходит для корневого объекта, но не имеет метода для проверки или вывода списка псевдонимов Criteria.
У кого-нибудь есть лучшее решение?