2

我做了相当多的研究,最后决定问这个。

我有两个这样的课程:

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"

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

据我所知,我必须创建别名来加入子属性,但这违背了示例标准的目的。

对此有何评论?

4

1 回答 1

3

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

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

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

于 2012-02-17T19:05:09.717 回答