java - 使用弹簧在数据库上搜索参数
问题描述
我有这两个 ID,ID_A 和 ID_B。
我想要做的是根据这两个 id 进行搜索,但用户不需要两个输入它们中的两个。
比如我有两个输入框供用户输入ID_A和ID_B。
使用 ID_A 搜索对象时,我希望我的查询忽略我的 ID_B(使其默认为非空)。在数据库上可以使用通配符 '%' 做到这一点,但我不知道如何在春天做到这一点。两个 ID 都是 BigDecimals。
我试着做
if(ID_A==null)
substituteParmeter(ID_A)
替代参数方法将某个参数的当前值更改为通配符'%'。但是在执行此查询时:
Select t from Table t where t.ID_A like :id_a and t.ID_B like :id_b
如果 id_a 或 id_b 是“%”,则程序捕获到发现“%”的错误,并且它应该是一个 bigDecimal。
我怎样才能绕过错误?
谢谢。
解决方案
您可以使用如下查询:
Select t from Table t where :id_a is null or t.ID_A like :id_a and :id_b is null or t.ID_B like :id_b
希望这对你有用。
推荐阅读
- facebook - 作为我的应用审核的一部分,需要进行业务验证
- r - R - 使用多个标识符匹配值(当查找 ID 的顺序是随机时)
- mysql - 在从环回模型自动迁移之前,您必须在 mysql 中手动创建数据库吗?
- java - JNA 本机代码有时会失败并显示错误代码 127:“找不到指定的过程”
- mysql - MySQL - 查找来自多个供应商的商品的最新、最优惠价格
- android - Google Voice Actions 查询的语言
- python - 在值的数量之后将一个大逗号分隔的行拆分为多行
- css - 如何用小到大的列制作基于 sass 的网格系统
- vue.js - VeeValidate 确认规则因自定义验证器而失败
- git - 将提交移动到不同的分支