我正在@Formula為我的 Entity/Pojo 類中的一個屬性使用注釋。在運行時,它正在創建一個查詢來獲取結果,并且由于 ORA-02000: missing WITHIN keyword無法識別WITHIN為關鍵字而拋出 ERROR。標記.java@Formula("(SELECT CASE WHEN dis_order IS NULL THEN (SELECT listagg(qpm.displayed_order,', ') WITHIN GROUP (ORDER BY qpm.displayed_order) FROM que_post_mark qpm WHERE qpm.es_id = es_id AND qpm.sez_id = sez_id GROUP BY qpm.es_id, qpm.sez_id) ELSE NULL END FROM dual)")private String childItemsDisplayedOrder;生成的查詢如下:select marks0_.*,(SELECT CASE WHEN marks0_.displayed_order IS NULL THEN (SELECT listagg(qpm.displayed_order, ', ') marks0_.WITHIN GROUP (ORDER BY qpm.displayed_order) FROM que_post_mark qpm WHERE qpm.es_id = marks0_.es_id AND qpm.sez_id = marks0_.sez_id GROUP BY qpm.es_id , qpm.sez_id) ELSE NULL END FROM dual) as formula2_0_ from MARKS marks0_ where marks0_.es_id =?它被識別WITHIN為列并附加別名,如marks0_.WITHIN我正在使用以下版本: spring-boot-starter-web = 1.4.0.RELEASE, spring-data-jpa:jar:1.10.2 ,hibernate-entitymanager:jar:5.1.3' hibernate-core:jar:5.1.3, hibernate-jpa-2.1-api:jar我試圖降低那些 jar 版本以使其工作,但它沒有工作。錯誤堆棧跟蹤如下:Caused by: java.sql.SQLSyntaxErrorException: ORA-02000: missing WITHIN keyword at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399) at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257) at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:225) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:53)誰能幫我解決這個問題?
Hibernate/Spring Data JPA 無法識別 Spring Boot 應用程序中的
慕婉清6462132
2022-05-25 15:39:47