HQL 不等于且不在查询中不起作用
HQL not equal and not in Query is not working
@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 查询,而不是本机查询
因为你使用 or
:
OR i.code LIKE %:icdString% OR i.desc LIKE %:icdString%
将or
更改为and
尝试使用 concat 建立一个合适的 like 条件
并使用 ()
构建适当的 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);
@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 查询,而不是本机查询
因为你使用 or
:
OR i.code LIKE %:icdString% OR i.desc LIKE %:icdString%
将or
更改为and
尝试使用 concat 建立一个合适的 like 条件 并使用 ()
构建适当的 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);