假设我有一个MyData
使用主标识符字段(BigDecimal
类型称为“primaryID”)和两个Boolean
字段称为“fieldA”和“fieldB”调用的 JPA 注释类。我想要做的是创建一个将为fieldA AND fieldB
给定MyData
实例选择的 JPA 查询。
final CriteriaBuilder builder = entityManager.getCriteriaBuilder();
final CriteriaQuery<Boolean> boolQuery = builder.createQuery(Boolean.class);
final Root<MyData> data = boolQuery.from(MyData.class);
boolQuery.select(builder.isTrue(builder.and(data.<Boolean> get("fieldA"),
profile.<Boolean> get("fieldB"))));
final Predicate primaryIDPredicate = builder.equal(profile.<BigDecimal> get("primaryID"),
1000);
boolQuery.where(primaryIDPredicate);
final TypedQuery<Boolean> myQuery = entityManager.createQuery(boolQuery);
当我entityManager
执行这个查询时,我得到:org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: and near line 1...
。这让我相信我需要一些不同的东西(除了builder.isTrue
方法)来指定我想要一个布尔值和我的对象的两个字段。关于我应该如何构建这个查询的任何想法?