Querydsl - 无法确定搜索的案例陈述

时间:2017-07-06 00:06:45

标签: hibernate querydsl

这个问题在几年前得到了回答(具有相似的标题),但我正在努力奋斗。似乎无论我在then()谓词中放入什么表达式,我都会遇到Hibernate错误:

无法确定已搜索的案例陈述的数据类型

基本上这是导致问题的简化代码段:

SimpleExpression<String> adjustmentFlag = 
        new CaseBuilder()
                .when(myObject.id.isNotNull())
                .then(Expressions.asString("true"))
                .otherwise(Expressions.asString("false"));

当我在一个简单的选择陈述中使用它时,我得到的具体错误是:

引起:org.hibernate.QueryException:无法确定搜索的case语句的数据类型[select ... stuff ...,(当(myObject.id不为空)时的情况则为?2 else?3 end)来自......表格列表......]

无论我将什么放入then()或其他()方法,似乎都没有用。从其他帖子,他们谈论使用表达式 - 我尝试过各种各样的,每次都会出现相同的错误。

其他人有这样的问题吗?这似乎是一个常见的问题,但我对如何继续下去感到困惑。任何帮助将不胜感激。

使用Querydsl 4.1.3,Hibernate 5.0.10

谢谢!

1 个答案:

答案 0 :(得分:0)

没关系 - 想通了。它实际上不是then()或otherwise()方法中的表达式 - 它是我在when()条件中使用的文字。我将它们改为使用表达式。它现在正在运作。