hibernate - 如何让 Hibernate 过滤器在 JPA 中工作?

标签 hibernate hibernate-annotations

我有以下实体类:


@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);
}

现在,如果我正确理解了这一点,则应应用过滤器,并且如果姓氏不等于“smith”,我尝试检索的任何用户都应返回 null。问题是过滤器似乎没有被应用。我尝试从数据库检索的任何用户,无论姓氏的值如何,都会返回。

我是否误解了过滤器的工作原理?或者我在配置过程中遗漏了一些东西?请注意,我没有使用 hibernate.cfg.xml;一切都是使用 JPA 和注释为我配置的。

任何帮助将不胜感激。

谢谢。

最佳答案

过滤器不会影响通过 ids 进行的任何形式的查找。这也是无法过滤一对一和多对一关联的确切原因。

关于hibernate - 如何让 Hibernate 过滤器在 JPA 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10884332/

相关文章:

Hibernate 对同一对象的一对一关系

java - 在 Hibernate 中删除父子对象时出现问题 "deleted object would be re-saved by cascade"

java - 从用户注册中检查数据库中的唯一值约束

java - Hibernate Criteria 来自单个查询的多个 rowCounts

Hibernate:什么是连接池?为什么默认连接池不适合生产?

sql - 如何删除重复的别名 hibernate

java - 嵌入模式下的 h2 并发更新

java - 在 Spring/Hibernate 中执行 CRUD 操作时抛出正确的异常

spring - 如何在 hibernate 中为自身实体添加@onetoone 映射

java - 具有父子关系的实体(单表)的HQL查询