是否可以将逻辑表达式编写为JPQL合并函数的参数?

时间:2017-02-07 15:50:01

标签: hibernate jpa jpql

在JPQL中可以写:

select c from Car c where coalesce(c.wheels, 4) = 4

或者,如果您更喜欢使用螺栓,

select c from Car c where coalesce(c.wheels * c.bolts, 20) = 20

但是,如果我尝试类似

的话
select c from Car c where coalesce(c.wheels = 20, true)

它会失败。 Hibernate日志显示空的coalesce()或"意外的AST节点"错误。

当然,这是一个合成的例子;我的代码使用带有subselect的复杂表达式,不能以其他方式轻松编写。 CASE也不起作用。我想知道有没有办法在coalesce中编写逻辑表达式?

更新

最后一个例子不起作用,因为必须存在比较(= true)

这适用于(布尔字段):

select c from Car c where coalesce(c.tested, false) = true

这不起作用(布尔表达式):

select c from Car c where coalesce(c.wheels = 20, true) = true

0 个答案:

没有答案