JavaSpring,类似JPA的带有通配符的表达式

JavaSpring,类似JPA的带有通配符的表达式,spring,hibernate,jpa,jpql,Spring,Hibernate,Jpa,Jpql,我正在努力在JavaSpring应用程序中使用Like表达式创建JPQL语句。我的目标是实现简单的不区分大小写的搜索函数 我的代码应该返回一个公司列表,该列表的名称中包含一个关键字,如下所示: List<Company> companies = em.createQuery("select cmp from JI_COMPANIES as companies where UPPER(cmp.name) LIKE :keyWord", Company.class)

我正在努力在JavaSpring应用程序中使用Like表达式创建JPQL语句。我的目标是实现简单的不区分大小写的搜索函数

我的代码应该返回一个公司列表,该列表的名称中包含一个关键字,如下所示:

    List<Company> companies = em.createQuery("select cmp from JI_COMPANIES as companies where UPPER(cmp.name) LIKE :keyWord", Company.class)
            .setParameter("keyWord","%" + keyWord.toUpperCase() + "%").getResultList();
    return companies;

似乎我的查询被翻译为cmpn_name='name',而不是使用like表达式

您可以查看最佳实践,这是我的错,因为我不了解Spring数据JPA库是如何工作的

我尝试创建myCompanyRepository的自定义实现(myCompanyRepository扩展了JpaRepository、CompanyRepositoryCustom)

我上面提到的代码位于我的CompanyRepositoryCustomImpl类中,该类实现CompanyRepositoryCustom接口。但是,我使用了方法名“findCompaniesByName(字符串名)”。JPA自动从这个方法名创建一个查询,而我的实现没有被使用

Hibernate: select ... /* all my parameters */ ... where company0_.CMPN_NAME=?