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
574   2  

2 ответов:

Нет. По крайней мере, не так, как ты просил. Как только вы попросите Hibernate войти в базу данных (с помощью метода list()), Hibernate выполнит свою часть, и результаты теперь в ваших руках. Для последующей обработки результатов в коде можно реализовать логику фильтрации.

Тем не менее, можно фильтровать результатыв самом запросе . Если вы определите фильтр Hibernate и включите его для конкретной модели/запроса, вы сможете сохранить исходный запрос HQL, и Hibernate добавит его с помощью дополнительные предложения where для дальнейшей фильтрации результатов. Смотрите это:

Http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/filters.html

Лучше всего было бы использовать критерии . Вот пример из документации Hibernate, который объясняет использование критериев .

Критерии будут использоваться перед вызовом метода списка.

Надеюсь, это поможет.

Comments

    Ничего не найдено.