【问题标题】:Is it possible to use Querydsl CaseBuilder when checking for null-value in a left join?在左连接中检查空值时是否可以使用 Querydsl CaseBuilder?
【发布时间】:2013-02-21 13:33:57
【问题描述】:

是否可以像以下示例一样使用CaseBuilder?我们正在使用带有 JPA / Hibernate 设置的 Querydsl。

public class Foo {
    Bar bar
}
public class Bar {}

// query:
Expression<Boolean> isNull = new CaseBuilder()
    .when(foo.bar.isNull()).then(false)
    .otherwise(true)

new JPAQuery(em)
    .from(foo)
    .leftJoin(foo.bar)
    .list(foo.name, isNull);

尝试类似查询时,我收到以下错误:

java.lang.ClassCastException: org.hibernate.hql.internal.ast.tree.ParameterNode cannot be cast to org.hibernate.hql.internal.ast.tree.SelectExpression
    at org.hibernate.hql.internal.ast.tree.CaseNode.getFirstThenNode(CaseNode.java:43)  
    at org.hibernate.hql.internal.ast.tree.CaseNode.getDataType(CaseNode.java:39)
    at org.hibernate.hql.internal.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:152)
    ...

【问题讨论】:

    标签: null left-join case querydsl


    【解决方案1】:

    这在语法上是可行的,但目前 Hibernate 不支持。这是一张相关的票https://github.com/mysema/querydsl/issues/185

    【讨论】:

      猜你喜欢
      • 2019-05-05
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 2023-03-08
      • 2021-01-08
      相关资源
      最近更新 更多