如何在默认情况下为特定实体打开休眠过滤器?

Fra*_*See 2 java entity hibernate default filter

我目前有一个实体,其上设置了where子句.我想把where子句放在过滤器上并默认启用它(这样我就不会破坏任何现有的功能).

我想把它变成一个过滤器,以便我可以禁用它,因为我有一个用例,我需要它禁用它.

我怎么能在hibernate 3.1.3中做到这一点?

Bry*_*anD 7

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;
}
Run Code Online (Sandbox Code Playgroud)

然后在您的具体用例中,您可以disableFilter("yourFilter");.