如何使用QueryCriteriaUtils实现Corda忽略大小写的字段查询?
实现Corda中忽略大小写的字段查询
要解决原查询区分大小写的问题,你可以利用Corda Criteria API提供的lower()函数,将数据库字段和查询值统一转换为小写后再进行比较,这样就能实现忽略大小写的匹配了。
直接修改你的代码如下:
searchCriteria = builder { // 将数据库中的customerName转为小写,同时把查询的名称列表也转成小写 lower(BondContract.BondEntity::customerName).`in`(listOf(name1, name2).map { it.lowercase() }) }
原理说明:
lower(BondContract.BondEntity::customerName):这个调用会告诉Corda在查询时将数据库里customerName字段的所有值转换为小写,Corda会自动适配不同底层数据库的LOWER()函数语法,无需担心数据库兼容性问题。listOf(name1, name2).map { it.lowercase() }:把你要查询的名称列表也统一转成小写,确保字段值和查询值的比较基准完全一致。
如果是单个值的相等查询,逻辑也是一样的:
searchCriteria = builder { lower(BondContract.BondEntity::customerName).equal(targetName.lowercase()) }
这种方法不需要修改数据库表结构(比如把列改成不区分大小写的类型),完全通过Corda原生API实现通用的忽略大小写查询。
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

