繁体   English   中英

Hibernate JPA 元模型——引用嵌套属性?

[英]Hibernate JPA Meta Model -- reference nested properties?

假设一个实体模型,其中Employee有一个idSupervisor 使用hibernate-jpamodelgen为实体生成元模型,如何查询嵌套字段?

例如,“使用JpaSpecificationExecutor获取主管 ID 为 4 的所有员工”:

Page<Employee> getEmployeesBySupervisorId(int id) {
  return findAll((root, query, criteriaBuilder) -> {
    return criteriaBuilder.equal(root.get(Employee_.supervisor.id), id);
  });
}

需要注意的是Employee_是模型元类Employee (和由Hibernate生成)。

此代码将产生错误,因为在SingularAttribute<Employee, Supervisor>类型上找不到id符号。 我明白了,但似乎这些应该以某种方式可以链接。 我找不到如何干净地做到这一点的好例子。

为了导航到相关实体,您必须使用From#join() join 方法,该方法与 MetaModel 配合良好:

CriteriaQuery<Employee> cq = criteriaBuilder.createQuery(Employee.class);
Root<Employee> from = cq.from(Employee.class);
Predicate p = criteriaBuilder.equal(from.join(Employee_.supervisor).get(Supervisor_.id), id);

也可以看看

Oracle 的 Java EE 教程 - 使用 Criteria API 和元模型 API 创建基本类型安全查询

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM