Как включить фильтр гибернации для определенной сущности по умолчанию? - PullRequest
2 голосов
/ 15 декабря 2009

В настоящее время у меня есть объект, для которого установлено предложение where. Я хочу поместить предложение where в фильтр и включить его по умолчанию (чтобы не нарушать существующие функции).

Я хочу превратить его в фильтр, чтобы можно было его отключить, потому что у меня есть сценарий использования, в котором он мне нужен.

Как я могу это сделать в Hibernate 3.1.3?

1 Ответ

7 голосов
/ 15 декабря 2009

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

Я полагаю, что другой альтернативой для достижения того, о чем вы просите, является инкапсуляция включения вашего фильтра в вашем классе "HibernateUtil" (при условии, что у вас есть такой зверь, который отвечает за открытие новых сессий для вашего кода). По умолчанию ваш метод для получения нового сеанса будет создавать экземпляр сеанса и затем включать фильтр перед возвратом. Примерно так:

public Session newSession(){
    Session session = sessionFactory.openSession();
    // this assumes you don't have criteria to set depending on the context
    session.enableFilter("yourFilter");  
    return session;
}

Тогда в вашем конкретном случае вы можете disableFilter("yourFilter");.

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