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

带有IN和其他AND子句的JPA Criteria API

如何解决带有IN和其他AND子句的JPA Criteria API

我想使用Criteria API建立类似sql查询,但我不知道如何正确执行。

Select * from Obj o where o.status =: status and vesselType in (: vesselTypes) and companyName in (: companyNames) and destinationPort in (: destinationPorts) and date between etd1 and etd2
  public List<Obj> getReportDataCreteria(String status,List<String> vesselTypes,List<String> destinationPorts,List<String> companyNames,Date etd1,Date etd2){
        CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
        CriteriaQuery<Obj> criteriaQuery = criteriaBuilder.createquery(Obj.class);
        Root<Obj> brRoot = criteriaQuery.from(Obj.class);

        Predicate statusPredicate = criteriaBuilder.equal(brRoot.get("status"),"OK");
        Predicate etd1Predicate = criteriaBuilder.greaterThanorEqualTo(brRoot.get("etd"),etd1);
        Predicate etd2Predicate = criteriaBuilder.lessthanorEqualTo(brRoot.get("etd"),etd2);
       // Predicate vesselTypesPredicate = criteriaBuilder.in(brRoot.get("vesselType"),vesselTypes);


        criteriaQuery.select(brRoot);
        criteriaQuery.where(statusPredicate);

       ...
       ...

        return result;
    }

我该怎么做并完成我的功能

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