【发布时间】:2016-07-27 10:44:55
【问题描述】:
SELECT m FROM Clientmessage m
WHERE (((m.userid = 4) OR ( m.recipientid = 4 ))
AND (m.isdeleted = false)
AND ((m.currentstate IS NULL)
OR (m.currentstate IN (NULL, 'CREATED', 'DELIVERED'))))
order by m.timereceived
第 1 行,第 48 列:[=] 处的语法错误。内部异常: MismatchedTokenException(80!=82)
知道错误可能是什么吗?!我没主意了。
所以 stackoverflow 希望我解释为什么我的问题与可能的重复问题不同。老实说,我厌倦了这个网站。事实并非如此,如果每次有人认为我必须解释某事时我都必须解释这一点,我会在别处寻求帮助。天哪。
【问题讨论】:
-
你必须想象前 6 行的人是 1。这就是我最初发布它们的方式。然后他们被编辑了。
-
向我们展示实体的代码
-
尝试从您的 IN(NULL,...) 中删除 NULL,因为您已经对其进行了测试
-
farrellmr:是的。冗余空检查是原因。它不应该有所作为,但我认为当底层 jpa 组件将其转换为 jdbc/sql 时,它会导致奇怪的行为,因为可能不会检查标准中的冗余
-
该查询的第 48 个字符是什么?!