【发布时间】:2020-06-17 14:53:42
【问题描述】:
我正在使用 selectCase 编写 JPA Criteria 查询
CriteriaQuery<Tuple> query = builder.createTupleQuery();
Root<MyEntity> root = query.from(MyEntity.class);
Join document = ...
Join topic = ...
query.multiselect
(
root.get("id"),
document.get("id");
builder.selectCase().when(builder.notEqual(document.get("id"), null), topic.get("id")),
builder.selectCase().when(builder.notEqual(document.get("id"), null), topic.get("name")),
);
TypedQuery<Tuple> typedQuery = entityManager.createQuery(query);
如果我不应用 2 个选择案例,则查询工作正常。
但是使用上面的代码,我在entityManager.createQuery(query) 得到空指针异常。
我对选择案例的意图是在文档的 id 不为空时打印主题的 id 和名称。
Exception:
java.lang.NullPointerException
at org.hibernate.query.criteria.internal.predicate.ComparisonPredicate.render(ComparisonPredicate.java:172)
at org.hibernate.query.criteria.internal.predicate.AbstractSimplePredicate.render(AbstractSimplePredicate.java:48)
at org.hibernate.query.criteria.internal.Renderable.renderProjection(Renderable.java:34)
请建议我缺少什么。
编辑: 我也试过:
builder.selectCase().when(builder.isNotNull(document), topic.get("id")),
builder.selectCase().when(builder.isNotNull(document), topic.get("name"))
【问题讨论】: