如何忽略 Spring JPA findBy 存储库中的重音符号?
Posted
技术标签:
【中文标题】如何忽略 Spring JPA findBy 存储库中的重音符号?【英文标题】:How to ignore accents in Spring JPA findBy repository? 【发布时间】:2019-07-05 05:23:03 【问题描述】:假设我们有这个存储库:
public interface DeviceTypeRepository extends CrudRepository<DeviceType, Integer>, JpaSpecificationExecutor<DeviceType>
public Iterable<DeviceType> findByNameContaining(String name);
如何通过忽略用户错误输入重音搜索过滤器来获得相同的结果?
示例:João | Joao | JOÃO
、Marcio | Márcio
等
【问题讨论】:
可以从字符串中删除重音符号,但您必须保存不带重音符号的信息(一个版本)。见:***.com/questions/3322152/… 【参考方案1】:在 Spring 的内置功能中无法做到这一点。你可以考虑使用Elastic Search来做这件事,有一篇关于这个主题的文章You Have an Accent。
另一种方法是不在 DB 中存储重音字母并在执行 SQL 请求之前执行映射或使用自定义 SQL 函数在 DB 端执行映射 - 但这是一个过于繁琐和脆弱的解决方案。
【讨论】:
以上是关于如何忽略 Spring JPA findBy 存储库中的重音符号?的主要内容,如果未能解决你的问题,请参考以下文章
Spring数据JPA中findBy和findOneBy的区别
Spring Data JPA findBy一个集合[重复]
spring data jpa getOne抛出LazyInitializationException而findBy没有
Spring Data JPA 之间 findBy / findAllBy 的区别
spring data jpa getOne 抛出 LazyInitializationException 和 findBy 不