2017-03-20 83 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

仍然獲得 –