HQL - 基于列的条件WHERE子句

时间:2016-12-12 13:03:10

标签: java hibernate hql

我对HQL很新,我正在尝试在我的hql查询中添加WHERE子句,以便仅在其中一列具有特定值的情况下应用过滤器。我已经阅读了CASE WHEN语句,我正在尝试使用它,但显然我做错了,因为我在查询中遇到语法错误。

我尝试的是以下内容:

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

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

QuerySyntaxException: unexpected token: >=

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

1 个答案:

答案 0 :(得分:2)

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

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

它解决了你的问题吗?