【发布时间】:2021-06-16 23:34:29
【问题描述】:
我正在为我的 Spring 项目构建一个本机查询。有人知道问题是什么吗?
@Query(value = "SELECT e.first_name as firstName, e.last_name as lastName, jh.start_date as startDate, jh.end_date as endDate, " +
"j.job_title as jobName, d.department_name as departmentName FROM JOB_HISTORY jh " +
"JOIN JOBS j ON jh.JOB_ID = j.JOB_ID " +
"JOIN DEPARTMENTS d ON JH.DEPARTMENT_ID = d.DEPARTMENT_ID " +
"JOIN EMPLOYEES e ON jh.EMPLOYEE_ID = e.EMPLOYEE_ID " +
"ORDER BY jh.:sortBy :orderBy")
List<EmployeeJobView> getAllEmployeeJob(String sortBy, String orderBy);
org.hibernate.hql.internal.ast.QuerySyntaxException:期待 IDENT, 在第 1 行第 348 列附近找到 ':' [SELECT e.first_name as firstName, e.last_name 作为 lastName,jh.start_date 作为 startDate,jh.end_date 作为 endDate,j.job_title 作为 jobName,d.department_name 作为部门名称 FROM JOB_HISTORY jh JOIN JOBS j ON jh.JOB_ID = j.JOB_ID JOIN DEPARTMENTS d ON JH.DEPARTMENT_ID = d.DEPAR TMENT_ID JOIN EMPLOYEES e ON jh.EMPLOYEE_ID = e.EMPLOYEE_ID ORDER BY jh.:sortBy :orderBy]
【问题讨论】:
-
如果你想构建一个原生查询,你需要使用你的数据库接受的原生 sql。 "jh.:sortBy :orderBy" 根本不是有效的 sql,看起来您从显然不是本机查询的东西中复制了它,而是从稍后插入这些值的某种准备好的语句中复制的。
-
问题是 jh.:sortBy 这个应该是什么?
-
如果你想执行原生查询,你必须设置属性 nativeQuery=true
-
我试图在参数中引用 sortBy 和 orderBy,如上所示: List
getAllEmployeeJob(String sortBy, String orderBy); .它只是在构建过程中崩溃,而不是在运行时。