Hibernate只获得满足关系的子关系

时间:2017-03-20 13:29:12

标签: java hibernate

我的关系如下

员工 - >工作(一对一)

工作 - >工资(一对多)

转换为以下类

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?

1 个答案:

答案 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正确映射)。