Hibernate:如何通过连接字符串创建JPQL ?



我试图找出一种方法来连接字符串来创建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);

最新更新