CriteriaBuilder查询中不区分java重音
我使用CriteriaBuilder和PredicateList来处理JPA并从数据库中提取信息,事实是它包含带有重音的数据,我需要进行搜索,即使我搜索时没有重音,我也会找到带有重音的单词。 例如: 数据库包含以下数据: “técnico a”的意思是 “tecnico b”
在我输入“tec”的子句中,我需要显示这两个选项。我怎么能让他跳过口音呢?我需要的结果是:
tecnico a, tecnico b
我有这个密码:
predicatesList.add((builder.like(builder.lower(root.<String>get("descripcion")),
'%' + (descripcion.toLowerCase().trim() + '%'))));
提前谢谢你
# 1 楼答案
重点是字符“é”和“e”是不同的。因此,如果由其中一个搜索,则无法同时找到这两个。这是我刚刚想到的一个想法。使您的表格包含两个字段进行描述。在“描述”中调用一个“描述”和另一个“标准化描述”,在“标准化描述”中存储原始值,并在其中用非重音字符替换所有重音字符。因此,在您的情况下,您的记录将如下所示:
记录a:
描述:'técnico a'
规范化描述:“tecnico a” 记录b:
描述:'tecnico b'
规范化描述:“tecnico b”
然后,如果需要按字段“normalized_description”进行搜索,如果需要按“description”进行特定值搜索