以 REPLACE 开头的 HQL 查询
HQL Query starting with REPLACE
我有一个以 REPLACE 开头的查询。当我直接在 MySQL
控制台中使用它时,一切都很好,所以查询是可以的。但是,当我像这样把它放在我的代码中时:
@Query("REPLACE INTO WeekAggregate...
出现错误:
web - 2016-10-05 10:35:44,297 [localhost-startStop-1] ERROR o.h.hql.internal.ast.ErrorCounter - line 1:1: unexpected token: REPLACE
antlr.NoViableAltException: unexpected token: REPLACE
我该如何解决这个问题? HQL 不支持 REPLACE 吗?
HQL
遍历底层DBMS。因此,您在 SQL 中使用的一些函数无法被 HQL 解释。
你有两种方法:
更改您的 HQL 查询(在这种情况下,您可以使用 DELETE/INSERT 语句重写您的查询)
您可以在 SQL 中编写您的查询,并且您可以使用方法 createSqlQuery 以便解释器将查询作为 SQL 本机查询运行。
我使用 nativeQuery = true 标志将查询更改为本机 SQL 查询。
我有一个以 REPLACE 开头的查询。当我直接在 MySQL
控制台中使用它时,一切都很好,所以查询是可以的。但是,当我像这样把它放在我的代码中时:
@Query("REPLACE INTO WeekAggregate...
出现错误:
web - 2016-10-05 10:35:44,297 [localhost-startStop-1] ERROR o.h.hql.internal.ast.ErrorCounter - line 1:1: unexpected token: REPLACE
antlr.NoViableAltException: unexpected token: REPLACE
我该如何解决这个问题? HQL 不支持 REPLACE 吗?
HQL
遍历底层DBMS。因此,您在 SQL 中使用的一些函数无法被 HQL 解释。
你有两种方法:
更改您的 HQL 查询(在这种情况下,您可以使用 DELETE/INSERT 语句重写您的查询)
您可以在 SQL 中编写您的查询,并且您可以使用方法 createSqlQuery 以便解释器将查询作为 SQL 本机查询运行。
我使用 nativeQuery = true 标志将查询更改为本机 SQL 查询。