带有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 (将#修改为@)