【问题标题】:EJB QL data Syntax errorEJB QL 数据语法错误
【发布时间】:2013-10-09 14:13:22
【问题描述】:

我正在尝试从 t.purchasedDate 的月份等于当前月份的 TransactionE t 实体中检索所有实体。

但是,我在运行代码时遇到了语法错误。

String query = "SELECT t FROM TransactionE t WHERE Month(t.purchaseDate) = Month(" + getCurrentDate()+")";

Query q = em.createQuery(query);

有什么帮助吗?

getCurrentDate() 是一个以“yyyy-MM-dd”格式返回当前日期的函数。

以下是我希望实现的查询。 SELECT t FROM TransactionE t WHERE Month(t.purchaseDate) = Month("2013-10-06")

错误: 原因:异常 [EclipseLink-8025] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.JPQLException 异常说明:解析查询语法错误 [SELECT t FROM TransactionE t WHERE Month(t.purchaseDate) = Month(getCurrentDate()), line 1, column 40: unexpected token [(].

【问题讨论】:

  • 尝试单引号日期
  • 您好,您的意思是这样的? SELECT t FROM TransactionE t WHERE Month(t.purchaseDate) = Month('2013-10-09') 我刚试过。单引号不起作用
  • 您使用的是哪个应用服务器?您使用的是哪个 JPA 库?

标签: java sql ejb ejbql


【解决方案1】:

Month 不是标准的 JPQL 函数。试试:

SELECT t 
  FROM TransactionE t 
 WHERE FUNC('MONTH', t.purchaseDate) = FUNC('MONTH', CURRENT_DATE)

【讨论】:

  • 嗨。我试过了,我得到了这个错误。解析查询的语法错误 [SELECT t FROM TransactionE t WHERE FUNC('MONTH', t.purchaseDate) = FUNC('MONTH', 2013-10-10)]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多