Java 在hibernate会话中禁用筛选器
我已经创建了一个过滤器来应用特定bean的会话。每次提取会话时,我都会启用筛选器:Java 在hibernate会话中禁用筛选器,java,hibernate,hibernate-filters,Java,Hibernate,Hibernate Filters,我已经创建了一个过滤器来应用特定bean的会话。每次提取会话时,我都会启用筛选器: @Override protected final Session getHibernateSession() { enableFilter("filterName", "parameterName", "parameterValue"); return super.getHibernateSession(); } 现在我希望对于一个特定的查询,不需要启用这个过滤器。有一个选项可以
@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并使用该会话创建条件并执行条件。旧链接已失效,找到新链接。谢谢更新了答案中的链接。