Oracle 列上的 HQL“为空”和“!= null”

Posted

技术标签:

【中文标题】Oracle 列上的 HQL“为空”和“!= null”【英文标题】:HQL "is null" And "!= null" on an Oracle column 【发布时间】:2011-07-01 06:58:37 【问题描述】:

hibernate 是否将 HQL 中的 column != null 转换为 SQL 中的 column is null

【问题讨论】:

【参考方案1】:

这是hibernate中的二元运算符,你应该使用

is not null

看看14.10. Expressions

【讨论】:

【参考方案2】:

没有。您必须在 HQL 中使用 is nullis not null

【讨论】:

【参考方案3】:

如果您确实想将null 值与'=''<>' 运算符一起使用,您可以找到

answer from @egallardo hier

非常有用。

'=' 的简短示例:表达式

WHERE t.field = :param

你这样重构

WHERE ((:param is null and t.field is null) or t.field = :param)

现在您可以将参数param 设置为某个非空值或null

query.setParameter("param", "Hello World"); // Works
query.setParameter("param", null);          // Works also

【讨论】:

正确答案,但有点矫枉过正:) 如果我没有其他解决方案,我会这样做:如果只有一两个可为空的参数,我发现进行许多 HQL 或 JPQL 查询会更好。 【参考方案4】:

没有。另请参阅此链接Handle conditional null in HQL,了解有关如何处理空值和非空值比较的提示和技巧。

【讨论】:

以上是关于Oracle 列上的 HQL“为空”和“!= null”的主要内容,如果未能解决你的问题,请参考以下文章

HQL 无法在公共外键列上连接两个表

相同列上的 Oracle 2 索引但顺序不同

主索引列上的 MySQL 表外键索引

穿梭列上的 Oracle APEX 交互式网格过滤器 APEX 19.2

索引列上的不同值

DateTime 列上的 Mono InvalidOperationException (SQL Server)