gpt4 book ai didi

java - 使用 Select Case 进行 JPA 条件查询

转载 作者:行者123 更新时间:2023-12-01 16:14:48 28 4
gpt4 key购买 nike

我正在使用 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 和名称。

异常:

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

最佳答案

尝试添加其他内容:

builder.selectCase()
.when(builder.isNotNull(document), topic.get("id"))
.otherwhise(builder.literal("")), // assuming String is the type returned for the query
builder.selectCase()
.when(builder.isNotNull(document), topic.get("name"))
.otherwhise(builder.nullLiteral(String.class)) // assuming String is the type returned for the query

关于java - 使用 Select Case 进行 JPA 条件查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62431914/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com