Предположим, у меня есть JPA-аннотированный класс с именем MyData
с полем первичного идентификатора (тип BigDecimal
с именем "primaryID") и двумя полями Boolean
с именами "fieldA" и "fieldB".Я хочу создать JPA-запрос, который выберет fieldA AND fieldB
для данного MyData
экземпляра.
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
), чтобы обозначить, что я хочу взять логическое значение и два поля моего объекта.Любые идеи о том, как я должен построить этот запрос?