如何从Spring @Query Annotation调用SQL函数

时间:2015-01-06 09:43:56

标签: java mysql spring-data

这里的语法有什么问题:

@Modifying
@Query(nativeQuery = true, value = "delete from simple_token where simple_token.expiry < NOW()")
int deleteExpiredTokens();

我得到了例外

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's where s.expiry < now()' at line 1

但查询采取的原样是&#39;将在MYSQL客户端中正常执行。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

您声明的查询和语法错误是不同的。例外where s.expiry < now()simple_token.expiry < NOW()中的@Query位置。看起来你运行错误的查询。可能是别名不正确

答案 1 :(得分:0)

道歉,我是个白痴。 sql&#39; as&#39;没有在mysql客户端工作。我将代码更改为:

@Modifying
@Query(nativeQuery = true, value = "delete from simple_token where expiry < NOW()")
int deleteExpiredTokens();

它现在可以正常使用