![](/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.