我做了大量的研究,最后决定问这个。
我有两个这样的课程:
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”
当示例设置了父属性但它不会过滤子属性时,它可以正常工作。
从我所看到的,我必须创建别名来加入子属性,但这种做法违背了示例标准的目的。
对此有何评论?
答案 0 :(得分:3)
使用createCriteria(Department.class)
创建的条件不会返回员工。它将返回Departments。
示例查询用于检索与您作为参数传递的示例相同的实体。但是,正如documentation所说:
忽略版本属性,标识符和关联