Hibernate示例标准查询:按子属性过滤

时间:2012-02-17 18:41:10

标签: hibernate criteria query-by-example

我做了大量的研究,最后决定问这个。

我有两个这样的课程:

Employee
-emp_id
-name
-dep_id

Department
-dep_id
-name

我正在使用此代码通过示例进行查询:

List<Employee> find = null;
Example example = Example.create(criteria)
        .excludeZeroes()
        .ignoreCase();
find = hibernateTemplate.getSessionFactory().getCurrentSession().createCriteria(Employee.class)
        .add(example)
        .list() ;
return find;

标准对象是Employee的一个实例,我想要检索具有给定部门名称的所有员工。

问题在于,当我执行代码时,即使条件具有如下属性集,我也会从所有部门获得员工:    criteria.department.name =“IT”

当示例设置了父属性但它不会过滤子属性时,它可以正常工作。

从我所看到的,我必须创建别名来加入子属性,但这种做法违背了示例标准的目的。

对此有何评论?

1 个答案:

答案 0 :(得分:3)

使用createCriteria(Department.class)创建的条件不会返回员工。它将返回Departments。

示例查询用于检索与您作为参数传递的示例相同的实体。但是,正如documentation所说:

  

忽略版本属性,标识符和关联