1
我目前有一个实体,其上设置了where子句。我想把这个where子句放在一个过滤器上,并默认打开(这样我就不会破坏任何现有的功能)。默认情况下,您如何为特定实体启用休眠过滤器?
我想把它变成一个过滤器,以便我可以禁用它,因为我有一个用例,我需要它禁用。
我该如何做到这一点在休眠3.1.3?
我目前有一个实体,其上设置了where子句。我想把这个where子句放在一个过滤器上,并默认打开(这样我就不会破坏任何现有的功能)。默认情况下,您如何为特定实体启用休眠过滤器?
我想把它变成一个过滤器,以便我可以禁用它,因为我有一个用例,我需要它禁用。
我该如何做到这一点在休眠3.1.3?
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");
。