2017-03-20 55 views
1

我有一个关系如下休眠获取满足关系子女的关系只

员工 - >作业(一对一)

工作 - >工资(一对多)

这是翻译以下类别的

public class Employee 
@OneToOne 
Job job; ....' 

public class Job 
@OneToMany() 
List<Salary> salaries; 

我想获得有一定的工作,这有一定的薪水的员工,因此对Hibernate一个标准可以恢复为PErF ORM这个任务如下

createCriteria(Employee.class).createAlias("job", "job") 
       .createAlias("job.salaries", "salaries").add(Restrictions.gt("salaries.sum", 5000)) 

,工作正常,但我也希望是,只有大于5000这些值可用,并加载所有薪水是这可能与休眠?

回答

0

我假设你想要将Salaries实体作为结果的一部分提取出来。

在这种情况下,试试这个:

createCriteria(Employee.class) 
.createAlias("job", "job") 
.createAlias("job.salaries", "salaries") 
.setFetchMode("job", FetchMode.JOIN) 
.setFetchMode("salaries", FetchMode.JOIN) 
.add(Restrictions.gt("salaries.sum", 5000)); 

当然,你还需要获取工作实体你的过程。

更新

尝试增加

@OneToMany(mappedBy = "job") 
List<Salary> salaries; 

这个映射。我假设工资实体有一个Job job字段(这是一个用@ManytToOne和@JoinColumn正确映射)。

+0

我要的是,随着总和大于5000的工资只有列表中存在,但目前我得到的与此相关的工作全部工资 –

+0

尽我更新的答案 –

+0

仍然获得 –