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);