java - Hibernate 获取仅满足关系的子关系

标签 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 实现?

最佳答案

我假设您希望将 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;

到此映射。我假设 Salary 实体有一个 Job job 字段(它与 @ManytToOne 和 @JoinColumn 正确映射)。

关于java - Hibernate 获取仅满足关系的子关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42904884/

相关文章:

java - eclipse jdt 编译器中不必要的强制转换警告

java - 比较两个 java.util.Date 以查看它们是否在同一天

java - 即使给出了正确的提供程序,也会发生有关 PersistenceProvider 的 Hibernate 警告

java - hibernate 锁定模式/锁定选项

java - Hibernate 模式验证失败,MySQL CHAR 映射到 String

java - 有什么方法可以在 HQL 中执行此查询吗?

java - ant java jar 没有主类

java - 检测是否从上一个 Activity 中按下了后退按钮

java - 如何将 jar 放在 jetty 类路径的 jetty/lib 中?

hibernate - 从我的 SystemOut.log 文件中重定向 hibernate 错误