Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查询生成器中的JPA2.0谓词条件列表_Java_Hibernate_Jpa_Criteria Api - Fatal编程技术网

Java 查询生成器中的JPA2.0谓词条件列表

Java 查询生成器中的JPA2.0谓词条件列表,java,hibernate,jpa,criteria-api,Java,Hibernate,Jpa,Criteria Api,代码: List conditionsList=new ArrayList(); 谓词onStart=criteriaBuilder.greaterThanOrEqualTo(criteriaRoot.get(“insertDateTime”),startTradeDate); 谓词onEnd=criteriaBuilder.lessThanOrEqualTo(criteriaRoot.get(“insertDateTime”),endTradeDate); 条件列表添加(onStart); 条

代码:

List conditionsList=new ArrayList();
谓词onStart=criteriaBuilder.greaterThanOrEqualTo(criteriaRoot.get(“insertDateTime”),startTradeDate);
谓词onEnd=criteriaBuilder.lessThanOrEqualTo(criteriaRoot.get(“insertDateTime”),endTradeDate);
条件列表添加(onStart);
条件列表添加(ONED);
CriteriaBuilder CriteriaBuilder=this.entityManager.getCriteriaBuilder();
CriteriaQuery CriteriaQuery=
createQuery(MyClass.class);
Root criteriaRoot=criteriaQuery.from(MyClass.class);
选择(criteriaRoot).where(条件列表);
上面的最后一行没有编译,因为它期望
conditionsList
对象是一个布尔值列表,而不是谓词列表

请告诉我如何将上述谓词添加到
hibernate
标准中?

列表
转换为数组
谓词[]
,如下所示:

List<Predicate> conditionsList = new ArrayList<Predicate>();
Predicate onStart = criteriaBuilder.greaterThanOrEqualTo(criteriaRoot.get("insertDateTime"), startTradeDate);
Predicate onEnd = criteriaBuilder.lessThanOrEqualTo(criteriaRoot.get("insertDateTime"), endTradeDate);
conditionsList.add(onStart);
conditionsList.add(onEnd);

CriteriaBuilder criteriaBuilder = this.entityManager.getCriteriaBuilder();
CriteriaQuery<MyClass> criteriaQuery = 
criteriaBuilder.createQuery(MyClass.class);
Root<MyClass> criteriaRoot = criteriaQuery.from(MyClass.class);
criteriaQuery.select(criteriaRoot).where(conditionsList);

您应该添加编译器错误
criteriaQuery.select(criteriaRoot).where(conditionsList.toArray(new Predicate[] {}));