HQL не равен и не в Query не работает - PullRequest
1 голос
/ 28 февраля 2020
@Query("SELECT i FROM ICD10CM i WHERE i.type NOT IN ('C') AND i.name LIKE %:icdString% OR i.code LIKE %:icdString% OR i.desc LIKE %:icdString%")
    List<ICD10CM> getICD10CMBySearch(@Param("icdString") String icdString);

Я получаю список ICD10CM, вместе с которым есть Type C, я хочу список других, чем Type C. Я пробовал not in ('C'), i.type != 'C', пробовал <>, а также пробовал NOT LIKE C%. Я хочу HQL Query для этого не нативный Query

Ответы [ 2 ]

4 голосов
/ 28 февраля 2020

Поскольку вы используете or:

OR i.code LIKE %:icdString% OR i.desc LIKE %:icdString%

, измените or на and

2 голосов
/ 28 февраля 2020

Попробуйте построить правильное условие, используя concat, и построить правильное условие OR, используя ()

  @Query("SELECT i 
    FROM ICD10CM i 
    WHERE i.type NOT IN ('C') 
    AND ( 
      i.name LIKE concat('%',:icdString,'%') 
      OR i.code LIKE  concat('%',:icdString,'%') 
      OR i.desc LIKE  concat('%',:icdString,'%')
    )")
      List<ICD10CM> getICD10CMBySearch(@Param("icdString") String icdString);
...