有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java NoViableAltException:@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 )*])

共 (2) 个答案

  1. # 1 楼答案

    正如巴拉吉·克里希南在评论中所说,解决办法是使用@NamedNativeQuery而不是@NamedQuery

  2. # 2 楼答案

    试试@NamedNativeQuery。您似乎使用了一些特定于DB的语法