我正在努力在 Java Spring 应用程序中使用 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;
但是,此查询仅在我的关键字与公司名称匹配时才有效(未使用 Like 语句)。
在测试上述功能时,我在来自 Hibernate 的控制台消息中看到:
Hibernate: select ... /* all my parameters */ ... where company0_.CMPN_NAME=?
似乎我的查询被翻译成 cmpn_name='name' 而不是使用 like 表达式。