2013-10-09 28 views
0

我試圖從TransactionE t實體中檢索t.purchasedDate的月份等於當前月份的所有實體。EJB QL數據語法錯誤

但是,我的代碼運行時遇到了語法錯誤。

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

Query q = em.createQuery(query); 

請幫忙嗎?

getCurrentDate()是一個函數,它將以「yyyy-MM-dd」格式返回當天的日期。

以下是我希望能夠實現的查詢。 SELECT噸FROM TransactionE噸WHERE月份(t.purchaseDate)=月( 「2013年10月6日」)

錯誤: 致:異常[的EclipseLink-8025](Eclipse持久服務 - 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 :意外的標記[(]

+0

嘗試日期單引號 –

+0

您好,您的意思是這樣的? SELECT t FROM TransactionE t WHERE Month(t.purchaseDate)= Month('2013-10-09') 我剛試過。單引號不起作用 –

+0

您正在使用哪個應用程序服務器?您使用的是JPA圖書館? –

回答

0

Month不是一個標準的JPQL功能嘗試:

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

嗨。我試過了,我得到了這個錯誤。解析查詢的語法錯誤[SELECT t FROM TransactionE t WHERE FUNC('MONTH',t.purchaseDate)= FUNC('MONTH',2013-10-10)] –