4
我試圖做類似下面的選擇查詢:NamedQuery用CONCAT返回錯誤
SELECT *, CONCAT(TNUSERDATE, ' - ', TNUSERTIME) AS datetime
FROM TODONOTE WHERE TNTDKEY='TD00019148' ORDER BY datetime DESC;
那查詢工作;然而,當我試圖將其轉移到命名查詢:
@NamedQueries({
@NamedQuery(name = "Todonote.findAll", query = "SELECT c FROM Todonote c"),
@NamedQuery(name = "Todonote.findByTaskNumber", query = "SELECT c, CONCAT(c.userDate, ' - ', c.userTime) AS datetime FROM Todonote c WHERE c.todoTask = :taskNumber ORDER BY datetime DESC")
})
我得到一個錯誤
[EL Severe]: 2012-08-23 12:15:39.111--ServerSession(841933)--Local Exception Stack:
Exception [EclipseLink-6168] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.QueryException
Exception Description: Query failed to prepare, unexpected error occurred: [java.lang.ClassCastException: org.eclipse.persistence.internal.jpa.parsing.ConcatNode cannot be cast to org.eclipse.persistence.internal.jpa.parsing.AliasableNode].
Internal Exception: java.lang.ClassCastException: org.eclipse.persistence.internal.jpa.parsing.ConcatNode cannot be cast to org.eclipse.persistence.internal.jpa.parsing.AliasableNode
Query: JPAQuery(name="Todonote.findByTaskNumber")
我不確定的問題是什麼,或者我會怎樣執行CONCAT聲明。我的目標是運行namedQuery,並且返回給我的ResultList已根據連接列中的值進行排序。
謝謝
是別名'datetime'的問題嗎? ('datetime'通常是一個SQL關鍵字。) – EthanB
@EthanB Nope,因爲第一個(原始sql)查詢有效。以防萬一我嘗試用「香蕉」取代它 - 同樣的錯誤。 =( –
看起來像JPA提供程序的SQL解析器中的錯誤。 –