Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 默认情况下,如何为特定实体启用hibernate筛选器?_Java_Hibernate_Filter_Entity_Default - Fatal编程技术网

Java 默认情况下,如何为特定实体启用hibernate筛选器?

Java 默认情况下,如何为特定实体启用hibernate筛选器?,java,hibernate,filter,entity,default,Java,Hibernate,Filter,Entity,Default,我目前有一个实体,上面设置了where子句。我想把where子句放在一个过滤器上,并在默认情况下打开它(这样我就不会破坏任何现有的功能) 我想把它变成一个过滤器,这样我就可以禁用它,因为我有一个需要禁用它的用例 如何在hibernate 3.1.3中做到这一点?hibernate文档似乎指出,过滤器(类似于SQL视图)是查看数据的可选方式,并不代表查看数据的“默认”方式。我的建议是坚持使用where子句,并为不需要过滤数据的用例编写一个特殊的访问器例程 我认为实现您要求的另一种方法是将过滤器的启

我目前有一个实体,上面设置了where子句。我想把where子句放在一个过滤器上,并在默认情况下打开它(这样我就不会破坏任何现有的功能)

我想把它变成一个过滤器,这样我就可以禁用它,因为我有一个需要禁用它的用例


如何在hibernate 3.1.3中做到这一点?

hibernate文档似乎指出,过滤器(类似于SQL视图)是查看数据的可选方式,并不代表查看数据的“默认”方式。我的建议是坚持使用where子句,并为不需要过滤数据的用例编写一个特殊的访问器例程

我认为实现您要求的另一种方法是将过滤器的启用封装在“HibernateUtil”类中(假设您有这样一个beast负责打开新会话供代码使用)。默认情况下,获取新会话的方法将实例化会话,然后在返回之前启用筛选器。大概是这样的:

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(“您的过滤器”)