我试图找出一种方法来连接字符串来创建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"vs "desc",我必须用JPA查询编写2个不同的存储库方法:
@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查询,以避免这种重复?
尝试使用调用者排序。
if (condition) {
obj.findMyEmployees("123",pageableObject , new Sort("employee.created_date "));
} else {
obj.findMyEmployees("234",pageableObject ,new Sort(Sort.Direction.DESC,"employee.created_date"));
}
并重写查询,如下所示:
String query= select emp.id,role_id from employee left join roles
on roles.id = emp.role_id
where emp.id = :id;
@Query(value = query,
countQuery = countToMyEmployees, nativeQuery = true)
Page<Object[]> findMyEmployees(@Param("id") String id, Pageable pageable, Sort sort);