2012-02-17 47 views
2

我已经完成了相当数量的研究并最终决定询问此问题。Hibernate示例条件查询:按子属性进行筛选

我有两个类是这样的:

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”

它正常工作时,例如有父属性设置,但它不会筛选子项属性。

从我所看到的,我必须创建别名来加入子属性,但是那种打败了示例条件的目的。

对此的评论?

回答

3

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

而且一个示例查询用于检索与您作为参数传递的示例相同的实体。但是,随着documentation说:

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

+0

你是正确的,它写的问题时出错。我已更新并标记为已回答。我将修改代码以添加标准以便由子实体进行过滤。谢谢。 – 2012-02-17 19:10:58