我的关系如下
员工 - >工作(一对一)
工作 - >工资(一对多)
转换为以下类
public class Employee
@OneToOne
Job job; ....'
public class Job
@OneToMany()
List<Salary> salaries;
我想获得那些有一定薪水的员工,因此可以返回执行此任务的hibernate标准如下
createCriteria(Employee.class).createAlias("job", "job")
.createAlias("job.salaries", "salaries").add(Restrictions.gt("salaries.sum", 5000))
哪个工作正常,但我也想要的是只有那些大于5000的值可用并加载所有工资这是可能的hibernate?
答案 0 :(得分:0)
我假设你想要获得作为结果一部分提取的薪水实体。
在这种情况下试试这个:
createCriteria(Employee.class)
.createAlias("job", "job")
.createAlias("job.salaries", "salaries")
.setFetchMode("job", FetchMode.JOIN)
.setFetchMode("salaries", FetchMode.JOIN)
.add(Restrictions.gt("salaries.sum", 5000));
当然,您还需要在流程中获取Job实体。
<强>更新强>
尝试添加
@OneToMany(mappedBy = "job")
List<Salary> salaries;
到这个映射。我假设Salary实体有一个Job job
字段(与@ManytToOne和@JoinColumn正确映射)。