首页 > 解决方案 > JPA Criteria API - LIKE / OR 关系

问题描述

我正在尝试为分配了 0 到 1 个发票实体的实体 shoporder 实现搜索功能。我尝试了以下方法:

root.fetch("invoice", JoinType.LEFT);
query.where(
        builder.or(
        builder.and(
                builder.isNotNull(root.get("invoice")), 
                builder.like(root.get("invoice").get("invoiceNumber"), "%"+filter+"%")),
        builder.like(root.get("buyerCheckoutMessage"), "%"+filter+"%"))
            );

我也尝试了没有 and 但它仍然没有返回任何内容,尽管其中一个 OR 对于某些项目是正确的。有任何想法吗?

标签: javajpaeclipselinkcriteria-api

解决方案


尝试这个

Join invoice = root.join("invoice", JoinType.LEFT);
query.where(
        builder.or(
            builder.and(
                builder.isNotNull(invoice), 
                builder.like(invoice.get("invoiceNumber"), "%"+filter+"%")),
            builder.like(root.get("buyerCheckoutMessage"), "%"+filter+"%")));

推荐阅读