JPA查询不接受 - " ' " [单引号]

时间:2015-01-30 06:50:13

标签: java hibernate jpa

我需要你的帮助,我被困了2天。想到处寻找解决方案,但没有运气。

我正在尝试将以下查询转换为JPA查询。

delete from the_table
where the_timestamp < now() - interval '7 days'

JPA查询

EntityManagerFactory em = tx.getEntityManagerFactory();
em.createEntityManager().createNamedQuery("delete from the_table where the_timestamp < now() - interval ?").setParameter(1, "'" +"7 days"+ "'").executeUpdate();

我收到以下错误: -

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement

还尝试使用基于参数的绑定,但问题仍然相同。下面是代码段

EntityManagerFactory em = tx.getEntityManagerFactory();
em.createEntityManager().createNamedQuery("delete from the_table where the_timestamp < now() - interval :deleteOlderRecords").setParameter("deleteOlderRecords", "'" +"7 days"+ "'").executeUpdate();

有人可以指出这里有什么问题吗?

2 个答案:

答案 0 :(得分:0)

不了解JPA,但在JDBC中你无法通过这样的间隔。你需要使用这样的东西:

"delete from the_table where the_timestamp < now() - interval '1' day * ?"

然后将天数作为整数传递

答案 1 :(得分:0)

您的查询无效(JPQL中没有关键字“interval” - 阅读任何体面的JPQL参考)。如果要输入时间戳,则最好使用参数。或者,您可以使用此转义显示的JDBC转义语法 http://www.datanucleus.org/products/accessplatform_4_1/jpa/jpql.html#literals