一尘不染

如何在HQL中模拟NVL

hibernate

我尝试了这个:

from Table where (:par1 is null or col1 = :par1)

但是碰巧

from Table where :par1 is null

即使:par1不为null,也总是返回表的所有行。

 select * from table where col1 = 'asdf'

不返回任何行。

我不能使用本机语法,因为我的应用程序应该在不同的数据库引擎上运行


阅读 504

收藏
2020-06-20

共1个答案

一尘不染

nvlHQL中的coalesce命令等效于该命令。 如果不为null,则coalesce(a,b)返回,否则返回。a``a``b

因此,您需要以下方面的东西:

from Table where col1 = coalesce(:par1, 'asdf')
2020-06-20