我对HQL
很新,我正在尝试在我的hql查询中添加WHERE
子句,以便仅在其中一列具有特定值的情况下应用过滤器。我已经阅读了CASE WHEN
语句,我正在尝试使用它,但显然我做错了,因为我在查询中遇到语法错误。
我尝试的是以下内容:
FROM myClass WHERE CASE WHEN col1 = :val1 THEN dtIns >= :dt1 ELSE true END
理想情况下,我想要做的是仅在dtIns >= :dt1
具有特定值时应用过滤器col1
,否则我不想应用任何过滤器。
服务器响应:
QuerySyntaxException: unexpected token: >=
谁能告诉我我做错了什么?
答案 0 :(得分:2)
最好在你的情况下写这样的查询:
FROM myClass WHERE col1 != :val1 OR dtIns >= :dt1
它解决了你的问题吗?