如何为以下语句编写标准构建器 API JPA 查询
Posted
技术标签:
【中文标题】如何为以下语句编写标准构建器 API JPA 查询【英文标题】:how to write criteria builder API JPA query for below statement 【发布时间】:2017-07-21 23:56:38 【问题描述】:我有两张表 Employee 和 Department。我想为以下语句编写 Criteria buider API JPA 查询。
从员工 e 中选择 *
emp_name 在哪里
(SELECT emp_name 来自 d 部门 WHERE d.emp_parentName IN('Ross','shane'))
按 e.emp_name 排序
【问题讨论】:
【参考方案1】:如果您正在寻找不带连接的条件查询,请使用子查询:
CriteriaBuilder criteriaBuilder = entityManger.getCriteriaBuilder();
CriteriaQuery<Employee> query = criteriaBuilder.createQuery(Employee.class);
Root<Employee> baseRoot = query.from(Employee.class);
Subquery<Department> subquery = query.subquery(Department.class);
Root<Department> subroot = subquery.from(Department.class);
subquery.select(subroot.get("empName"));
subquery.where(subroot.get("empParentName").in(nameList));
query.where(baseRoot.get("empName").in(subquery));
query.orderBy(criteriaBuilder.asc(baseRoot.get("empName")));
List<Employee> result = entityManager.createQuery(query).getResultList();
由于没有添加实体,我假设“empName”是员工和部门类中 emp_name 列的变量名称,而 empParentName 是 emp_parentName。 nameList 是您要过滤的名称列表。
【讨论】:
以上是关于如何为以下语句编写标准构建器 API JPA 查询的主要内容,如果未能解决你的问题,请参考以下文章
JPA 标准 API。使用带参数的 sql 函数调用进行查询