jpa查询有两个参数

时间:2017-07-31 16:39:19

标签: spring hibernate spring-data-jpa jpql

我有两个参数说明国家实体的名称和描述。

  1. 如果未提及name和desc,则查询应返回所有状态。
  2. 如果提到唯一的名称,则应返回与传递的名称匹配的已过滤状态列表
  3. 如果只传递了desc,则应返回与描述匹配的状态列表。
  4. 只有传递了名称和描述,结果才应包含与名称或描述匹配的所有状态。
  5. 我编写了如下的JPA查询:

    @Query("select s from State s where (:name is null or s.name = :name) or (:desc is null or s.desc=:desc)")
    List<State> fetchStates(@Param("name") String name,  @Param("desc") String description, Pageable pageable);
    

    生成的SQL查询:

    select state0_.state_id as state1_24_, state0_.created_date as creation2_24_, state0_.desc as descript3_24_, state0_.name as name4_24_ from state state0_ where ? is null or state0_.name=? or ? is null or state0_.desc=? order by state0_.name desc limit ?
    

    我想,如果我们有多个参数,我们就无法编写动态查询来获得所需的结果。如果我错过了我的假设,请告诉我。我是JPA的新手。

0 个答案:

没有答案