【问题标题】:How do you turn on a hibernate filter for a particular entity by default?默认情况下如何为特定实体打开休眠过滤器?
【发布时间】:2010-12-26 18:50:50
【问题描述】:

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

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

如何在休眠 3.1.3 中做到这一点?

【问题讨论】:

    标签: java hibernate filter entity default


    【解决方案1】:

    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");

    【讨论】:

      猜你喜欢
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      相关资源
      最近更新 更多