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 null
和 is 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”的主要内容,如果未能解决你的问题,请参考以下文章