[英]Hibernate named query issue
我有以下姓名查詢
@NamedQuery(name="ScInstantTrack.getCustomerDetails",
query="select b.cardDetail.mstCustomer.customerId, last_day(b.endDate), " +
"LISTAGG(b.txnId,'|') WITHIN GROUP (ORDER BY b.endDate), " +
"count(b.txnId), sum(b.amount), sum(b.balanceAmt), sum(b.redemptionAmt) " +
"from ScInstantTrack b " +
"where b.cardNo = b.cardDetail.cardBarcode " +
"AND b.cardDetail.mstCustomer.customerId = :customerId " +
"and b.startDate <= trunc(:todayDate) " +
"and b.endDate >= trunc(:todayDate) " +
"and b.cardDetail.mstStatus.statusId = 3003 group by b.cardDetail.mstCustomer.customerId, last_day(b.endDate)")
當我執行此查詢時,出現以下錯誤:
unexpected token: WITHIN
我正在使用Oracle數據庫。
為什么我收到此錯誤? 如何解決這個問題?
嘗試使用@NamedNativeQuery
而不是@NamedQuery
。
還要檢查一下它們之間區別的解釋 。
基本上,您使用的是Oracle DB中專有的表達式。 換句話說,您要執行本機查詢 (使用Oracle DB語言的本機查詢 )。 命名查詢使用Java Persistence Query Language
(即HQL)。
發生錯誤是因為LISTAGG
是oracle特定的功能。 該功能在HQL中不可用,因此您無法使用任何功能代替HQL。
為了獲得結果,您必須使用SQLQuery
執行本機SQL查詢。 這樣,您必須為每個數據庫實現一個thw查詢版本,但是它將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.