HQL - 基于列的条件 WHERE 子句

HQL - conditional WHERE clause based on column

我是 HQL 的新手,我正在尝试将 WHERE 子句添加到我的 hql 查询中,以便仅在其中一列具有特定条件时应用过滤器价值。我已经阅读了有关 CASE WHEN 语句的信息,并且我正在尝试使用它,但显然我做错了,因为我在查询中遇到了语法错误。

我试过的是:

FROM myClass WHERE CASE WHEN col1 = :val1 THEN dtIns >= :dt1 ELSE true END

理想情况下,我想做的是仅当 col1 具有特定值时才应用过滤器 dtIns >= :dt1,否则我不想应用任何过滤器。 服务器响应:

QuerySyntaxException: unexpected token: >=

谁能告诉我我做错了什么?

在你的情况下最好这样写查询:

FROM myClass WHERE col1 != :val1 OR dtIns >= :dt1

是否解决了您的问题?