Фильтрация запросов в Hibernate - PullRequest
2 голосов
/ 15 марта 2011

Я хотел бы спросить, возможно ли это сделать с помощью спящего режима.Допустим, я уже запустил HQL и получил коллекцию.Можно ли дополнительно отфильтровать его с помощью hibernate?

Я пытался использовать <filter> для класса заголовка и добавлять session.enable () перед запросом, но, похоже, он не работает.

Пример кода

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 ]

2 голосов
/ 15 марта 2011

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

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

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

2 голосов
/ 15 марта 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...