【发布时间】:2010-12-26 18:50:50
【问题描述】:
我目前有一个设置了 where 子句的实体。我想把 where 子句放在一个过滤器上,并默认打开它(这样我就不会破坏任何现有的功能)。
我想把它变成一个过滤器,这样我就可以禁用它,因为我有一个需要禁用它的用例。
如何在休眠 3.1.3 中做到这一点?
【问题讨论】:
标签: java hibernate filter entity default
我目前有一个设置了 where 子句的实体。我想把 where 子句放在一个过滤器上,并默认打开它(这样我就不会破坏任何现有的功能)。
我想把它变成一个过滤器,这样我就可以禁用它,因为我有一个需要禁用它的用例。
如何在休眠 3.1.3 中做到这一点?
【问题讨论】:
标签: java hibernate filter entity default
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");。
【讨论】: