问题描述
我想使用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 (将#修改为@)