java - JPA 规范 - 过滤嵌套列表对象
问题描述
我有一个Order
带有任务列表的实体(另一个实体),我需要使用规范来过滤Order
实体和嵌套的任务列表。
例子:
Select * Order where taks.done = "S"
我需要返回已完成的订单和任务列表。
我的问题是嵌套列表,规范仅过滤实体Order
而不是任务列表
public static Specification<Order> isDone(Indicator done) {
return new JoinableSpecification<>() {
@Override
public Predicate toPredicate(Root<Order> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
Path<Indicator> path = this.joinList(root, UsuarioProcesso_.tarefas, JoinType.INNER).get(Task.done);
return cb.equal(path, done);
}
};
}
解决方案
您可以使用规范连接。例子
(root, query, cb) ->
{
Join<Order, Task> taks = root.join(Task);
Expression<String> expression = taks.get(Task_.done);
Predicate predicate = expression.equals("s");
query.where(predicate);
return query.getRestriction();
};
推荐阅读
- javascript - 几个错误而不是一个
- python - 如何将行转换为列表
- android - 获取不正确的包和活动,重试
- nginx - Nginx:如何使用 /#/something 获取 url
- mysql - 错误,pkgProblemResolver::Resolve 生成的中断,这可能是由持有的包引起的
- go - launch.json MAC 的 Visual Studio Code 文件路径方案
- stream - Apache Tika - 无需下载文件即可获取元数据
- html - DataTable 在 Django 中无法与 Bootstrap 4 一起使用
- devexpress - DxDataGrid 中的自定义行过滤器(devextreme 数据网格)
- python - 如何将多个 Excel 文件合并到一张表中并在 Python 中保持文件的格式?