hibernate - 如何在HQL中模拟NVL

标签 hibernate hql

我尝试了这个:

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

但是碰巧
from Table where :par1 is null

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


 select * from table where col1 = 'asdf'

不返回任何行。

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

最佳答案

与HQL中的nvl命令等效的是coalesce命令。如果coalesce(a,b)不为null,则a将返回a,否则返回b

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

from Table where col1 = coalesce(:par1, 'asdf')

关于hibernate - 如何在HQL中模拟NVL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/601615/

相关文章:

java - Spring+Hibernate应用程序的环境特定配置

java - 用于查找超过 3 小时的条目的 Hibernate HQL 查询

java - 从简单的 HQL 查询中获取无效参数索引 1

sql - Hibernate:更新为来自其他表的总和

mysql - Spring Data 在 OneToMany 上创建内部联接

java - 当向嵌入式 tomcat 添加 war 时,当前线程没有 session

java - 创建自定义 Hibernate UserType - isMutable() 是什么意思?

java - hibernate - session 监控工具

java - ManyToMany 集合不断被删除

java - [Ljava.lang.Object;不能转换为