【发布时间】:2021-10-31 06:34:48
【问题描述】:
我正在尝试寻找一种连接字符串以创建 JPA 原生查询的方法。目前我有 3 个查询,只是因为有 1 个或 2 个不同的单词。例如:
String queryAsc = select emp.id,role_id from employee left join roles
on roles.id = emp.role_id
where emp.id = :id
order by employee.created_date asc;
String queryDesc = select emp.id,role_id from employee left join roles
on roles.id = emp.role_id
where emp.id = :id
order by employee.created_date desc;
仅仅因为“asc”和“desc”这个词的不同,我不得不用JPA查询写了2个不同的repository方法:
@Query(value = queryAsc,
countQuery = countToMyEmployees, nativeQuery = true)
Page<Object[]> findMyEmployeesAsc(@Param("id") String id, Pageable pageable);
@Query(value = queryDesc,
countQuery = countToMyEmployees, nativeQuery = true)
Page<Object[]> findMyEmployeesDesc(@Param("id") String id, Pageable pageable);
有没有办法在 JPA 查询中连接两个字符串以避免这种重复?
【问题讨论】:
-
你应该放弃通过弹簧连接创建请求的想法。关于使用
Crinteria API或QueryDSL或JooQ以编程方式创建自定义请求的事情。