首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jpql查询中的like和nvl - springboot JPA

问jpql查询中的like和nvl - springboot JPA
EN

Stack Overflow用户
提问于 2021-06-03 04:36:47
回答 1查看 88关注 0票数 0

我正在尝试将以下查询写入spring boot jpql (postgresql db)中。

代码语言:javascript
复制
    first_name
FROM
    employees
WHERE
    first_name LIKE concat(concat('%',nvl(:key,first_name) ),'%'); --This is oracle style query

我正在尝试用JPQL编写相同的逻辑(我是JPA和JPL的新手,但我知道这个简单的逻辑,我们可以使用较少的查询实现,但上面提到的是更大查询的一部分)。

我尝试了下面的方法。但实际上却被卡住了。

代码语言:javascript
复制
 @Query("select pe.packageName from  PackageEntity pe where " +
            "lower(pe.packageName) like  " +
            "case when :packageName is null then lower(pe.packageName) else concat('%',lower(:packageName),'%') end " )
    List<String> getValues( @Param("packageName") String roomIDList);

错误消息如下

org.postgresql.util.PSQLException: ERROR: function lower(bytea) does not exist Hint: No function matches the given name and argument types. You might need to add explicit type casts. Position: 190

老实说,我已经尝试了我能想到的所有可能的解决方案。在stackoverflow中发现同样的错误,但解决方案不匹配,我真的想在查询中发送空值,如果输入为空,则需要忽略验证,例如,如果输入参数为空,则我希望完全忽略验证。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-03 20:28:24

解决方案:-

代码语言:javascript
复制
@Query("select pe.packageName from  PackageEntity pe where " +           
            ":packageName is null or lower(pe.packageName) like 
              concat('%',lower(:packageName),'%')" )

上面的变通方法实际上起作用了。

但是我在cotroller代码中实现了

代码语言:javascript
复制
if (search.getPackageName() == null) {
            LOGGGER.info("Input Name is NULL");
            search.setPackageName("==!@#$%^&*()!@#$%^&*()==");
            LOGGGER.info("Input Name is set to Default " + search.getPackageName());
        }

 searchValue = repoPackage.getPackageAll(search.getPackageName());

在repo中,条件如下-不确定解决方案是否是最好的,但它起作用了。这样,我就避免了向jpa发送任何null值。

代码语言:javascript
复制
where
 (('==!@#$%^&*()!@#$%^&*()==' = :packageName) 
  or lower(pd.package_name) like concat('%', lower(:packageName), '%'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67812236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档