CriteriaBuilder查询中的重音不敏感

时间:2018-04-10 10:23:21

标签: java jpa

好吧,我正在使用CriteriaBuilder和PredicateList来处理JPA并从数据库中提取信息,事实是它包含带重音的数据,我需要进行搜索,即使我搜索没有重音,我也会找到口音也是。 例如: 该数据库包含以下数据: 'técnicoa'表示 ' tecnico b '。

在我输入' tec '的条款中,我需要两个选项才能显示。我怎么能让他跳过口音呢?我需要的结果是:

tecnico a, tecnico b

我有这段代码:

predicatesList.add((builder.like(builder.lower(root.<String>get("descripcion")),
                '%' + (descripcion.toLowerCase().trim() + '%'))));

提前谢谢。

1 个答案:

答案 0 :(得分:0)

关键是角色'é'和'e'是不同的。因此,如果他们中的一个搜索,你就找不到两者。这是我刚刚想到的一个想法。使您的表格包含两个字段以进行说明。在“描述”中调用一个“描述”和另一个“normilized_description”存储“normilized_description”中的原始值存储将用非重音符号替换所有重音字符的值。因此,在您的情况下,您的记录将如下所示:
记录a:
描述:'técnicoa'
normilized_description:'tecnico a'

记录b:
描述:'tecnico b'
normilized_description:'tecnico b'

然后,如果您需要搜索字段“normilized_description”并且如果您需要通过“说明”进行特定值搜索