java - 查询生成器中的 JPA 2.0 谓词条件列表

标签 java hibernate jpa criteria-api

代码:

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);

上面的最后一行无法编译,因为它期望 conditionsList 对象是 boolean 列表而不是谓词列表。

请告诉我将上述谓词添加到 hibernate 标准的正确方法?

最佳答案

转换List<Predicate>进入数组 Predicate[]像这样:

criteriaQuery.select(criteriaRoot).where(conditionsList.toArray(new Predicate[] {}));

关于java - 查询生成器中的 JPA 2.0 谓词条件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46094616/

相关文章:

java - 不幸的是,您的应用程序已停止工作

java - 如何使用hibernate在spring中获取实体类中的inet

java - JPA JoinColumn 与mappedBy

java - Hibernate Annotations - 哪个更好,字段访问还是属性访问?

java - 实体与表的不一致检查

java - Spring Boot - YML 配置 - 合并时删除条目

java - 接口(interface)和继承——一个面向对象的设计困境

java - 持久映射<实体,双> : having BLOB instead of String key in join table

java - 使用 Hibernate Criteria 获取多个随机行

java - Hibernate 映射问题(与 Struts 2 集成)