![](/img/trans.png)
[英]Pageable + @Query + JOIN (fetch?) in Spring Data don't work
[英]Spring Data native query with params don't work
我有一個類似於以下的本機查詢:
@Query(value = "SELECT * FROM (" +
" SELECT result.*, ROWNUM rn FROM (" +
" SELECT tmp.* FROM (" +
" SELECT " +
" e.id, " +
" e.employee_number, " +
" d.name, " +
" d.surname " +
" FROM employee e INNER JOIN detail d ON e.id_detail = d.id " +
" WHERE e.status = :status " +
" ) tmp " +
" ORDER BY :sortColumn :sortDirection " +
" ) result " +
" WHERE ROWNUM <= (:pageIndex + :pageSize) " +
") " +
"WHERE rn > :pageIndex "
, nativeQuery = true)
ArrayList<Object> getEmployeeDetails( @Param("status") EmployeeStatus status,
@Param("pageSize") int pageSize,
@Param("pageIndex") int pageIndex,
@Param("sortDirection") String sortDirection,
@Param("sortColumn") String sortColumn);
我收到以下錯誤:
org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
// ...
Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
// ...
Caused by: java.sql.SQLSyntaxErrorException: ORA-01745: invalid host/bind variable name
我嘗試的是不同的返回類型(並沒有設法找出最終使用哪一個),插入帶有@Param()
注釋的參數。
查詢本身確實有效 - 我直接在數據庫中嘗試過,但在 Spring 中處理它時遇到問題。
查詢本身便於調試:
SELECT * FROM (
SELECT result.*, ROWNUM rn FROM (
SELECT tmp.* FROM (
SELECT
e.id,
e.employee_number,
d.name,
d.surname
FROM employee e INNER JOIN detail d ON e.id_detail = d.id
WHERE e.status = 'status'
) tmp
ORDER BY tmp.name desc
) result
WHERE ROWNUM <= (0 + 5)
)
WHERE rn > 0
我已經用刪除所有\n
並檢查丟失的空格的評論建議更新了這個問題。
不使用任何參數的普通查詢也可以工作,但是當我開始通過@Param()
注釋或綁定( ?1
)插入參數時,它會停止工作,給出我在上面更新的錯誤。
如果EmployeeStatus
是enum
,則必須在查詢中使用它
WHERE e.status =:#{#status.name()}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.