我有以下实体类:
@Entity
@FilterDef (name = "byLastName", parameters = @Parameter (name = "lastName", type="string"))
@Filters ({
@Filter (name = "byLastName", condition = "lastName = :lastName")
})
public class User {
String firstName;
String lastName;
}
在我的 DAO 中,我这样做:
public User findById (Long id)
{
Session s = (Session) em.getDelegate ( );
s.enableFilter ("byLastName").setParameter ("lastName", "smith");
User u = em.find (User.class, id);
return (u);
}
现在,如果我理解正确,应该应用过滤器,如果 lastName 不等于“smith”,我尝试检索的任何用户都应该返回为 null。问题是过滤器似乎没有被应用。无论 lastName 的值如何,我尝试从数据库中检索的任何用户都会返回。
我是否误解了过滤器的工作原理?还是我在如何配置方面遗漏了一些东西?请注意,我没有使用 hibernate.cfg.xml;一切都是使用 JPA 和注释为我配置的。
任何帮助将不胜感激。
谢谢。