微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JPA 规范 - 过滤嵌套列表对象

如何解决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();
        };

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。