NoViableAltException:@NamedQuery 中的意外标记

NoViableAltException: Unexpected token in @NamedQuery

我有以下查询,当我直接在数据库中使用它时它正在工作:

@NamedQuery(name = "Sentitems.findWhereSendingDateTimeIsYesterdayByStatus",
        query = "SELECT s FROM Sentitems s WHERE s.status = :status AND DATE_FORMAT(s.sendingDateTime, '%Y-%m-%d') = SUBDATE(CURDATE(),1)")

当运行应用程序时,抛出一个NoViableAltException

Exception Description: Syntax error parsing the query [Sentitems.findWhereSendingDateTimeIsYesterdayByStatus: SELECT s FROM Sentitems s WHERE s.status = :status AND DATE_FORMAT(s.sendingDateTime, '%Y-%m-%d') = SUBDATE(CURDATE(),1)], line 1, column 66: unexpected token [(].
Internal Exception: NoViableAltException(83@[()* loopback of 383:9: (d= DOT right= attribute )*])

正如 Balaji Krishnan 在评论中所说,解决方案是使用 @NamedNativeQuery 而不是 @NamedQuery

试试 @NamedNativeQuery。您似乎在使用一些特定于数据库的语法。