Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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_Hibernate Filters - Fatal编程技术网

Java 在hibernate会话中禁用筛选器

Java 在hibernate会话中禁用筛选器,java,hibernate,hibernate-filters,Java,Hibernate,Hibernate Filters,我已经创建了一个过滤器来应用特定bean的会话。每次提取会话时,我都会启用筛选器: @Override protected final Session getHibernateSession() { enableFilter("filterName", "parameterName", "parameterValue"); return super.getHibernateSession(); } 现在我希望对于一个特定的查询,不需要启用这个过滤器。有一个选项可以

我已经创建了一个过滤器来应用特定bean的会话。每次提取会话时,我都会启用筛选器:

@Override
protected final Session getHibernateSession() {
   enableFilter("filterName",
         "parameterName", "parameterValue");
   return super.getHibernateSession();
}
现在我希望对于一个特定的查询,不需要启用这个过滤器。有一个选项可以禁用过滤器,但我无法找到正确的位置来执行此操作。我试过:

DetachedCriteria criteria = criteria();
// some restrictions and projections
disableFilter("filterName")
return find(criteria);

问题是,当find(criteria)被触发时,hibernate会话将再次被获取,从而启用过滤器。

我认为您已经创建了用于启用和禁用过滤器的单独方法

您必须禁用find(criteria)方法本身中的过滤器。 而不是做:

getHibernateSession().createQuery(somequery);
您必须执行以下操作:

Session session = getHibernateSession();
session.disableFilter("filterName");
session.createQuery(somequery);
这应该行得通。我还发现了一个链接,可以帮助:

我不明白。只需在会话上调用disableFilter并使用该会话创建条件并执行条件。旧链接已失效,找到新链接。谢谢更新了答案中的链接。