Hibernate фильтрация коллекций запросов
Я хотел бы спросить, Можно ли сделать это с помощью hibernate.
Допустим, я уже запустил HQL и получил коллекцию. Можно ли дополнительно отфильтровать его с помощью hibernate?
Я попытался использовать <filter> для класса заголовка и добавить сеанс.включите () перед запросом, но, похоже, это не работает.
Пример кода
Query search = session.getNamedQuery(HQL_SOMEDEFAULTQUERY);
List results = search.list();
//further filtering ...
Урезанный HQL
select h
from flow as f
join f.item as i
join i.header as h
where i.status = :status
and f.staff = :staff
order by i.prId desc
2 ответов:
Нет. По крайней мере, не так, как ты просил. Как только вы попросите Hibernate войти в базу данных (с помощью метода
list()), Hibernate выполнит свою часть, и результаты теперь в ваших руках. Для последующей обработки результатов в коде можно реализовать логику фильтрации.Тем не менее, можно фильтровать результатыв самом запросе . Если вы определите фильтр Hibernate и включите его для конкретной модели/запроса, вы сможете сохранить исходный запрос HQL, и Hibernate добавит его с помощью дополнительные предложения
whereдля дальнейшей фильтрации результатов. Смотрите это:Http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/filters.html
Лучше всего было бы использовать критерии . Вот пример из документации Hibernate, который объясняет использование критериев .
Критерии будут использоваться перед вызовом метода списка.
Надеюсь, это поможет.
Comments