Java Spring数据JPA-转义重音法语字符(é,á,è,è..)
我使用SpringDataJPA方法名称查询来执行SQL查询,例如FindBynameContainssString名称来查找名称包含给定字符串的所有实体。但它只适用于确切的字符。我想知道如果用户输入了é,如何返回名称中包含字符é及其基本字符e的所有实体。谢谢。我认为Spring数据中不存在此功能 因为您使用的是PostgreSQL,所以您可以使用它来帮助您解决问题,此外,您还必须创建一个本机自定义查询,如下所示:Java Spring数据JPA-转义重音法语字符(é,á,è,è..),java,postgresql,spring-data-jpa,Java,Postgresql,Spring Data Jpa,我使用SpringDataJPA方法名称查询来执行SQL查询,例如FindBynameContainssString名称来查找名称包含给定字符串的所有实体。但它只适用于确切的字符。我想知道如果用户输入了é,如何返回名称中包含字符é及其基本字符e的所有实体。谢谢。我认为Spring数据中不存在此功能 因为您使用的是PostgreSQL,所以您可以使用它来帮助您解决问题,此外,您还必须创建一个本机自定义查询,如下所示: @Query(nativeQuery = true, value = "SELE
@Query(nativeQuery = true, value = "SELECT * FROM table_name "
+ "WHERE col_name = :name collate utf8_bin")
public List<EntityName> find(@Param("name") String name);
PostgresSQL
MySQL
对于使用MySQL的用户,您可以像下面这样使用collate utf8\u bin:
@Query(nativeQuery = true, value = "SELECT * FROM table_name "
+ "WHERE col_name = :name collate utf8_bin")
public List<EntityName> find(@Param("name") String name);
SQL Server
对于使用Oracle的用户,您可以使用
参考资料:
您在数据库中是否有特殊字符,或者仅仅来自用户的输入?除了您正在使用的rdbms之外?是的,我希望在搜索过程中,英语字符及其变体可以互换。我的数据库中有Montreal和Montréal,我想在用户输入Montreal或Montréal时返回这两个名称。我使用PostgreSql,非常感谢您的示例。我成功地将findAllByNameStartingWithIgnoreCaseOrderByName转换为@QueryNaviRequesty=true,value=SELECT*FROM public.city+WHERE upperUncentCity_name,如upperUncent:name | |'%”。您熟悉spring批处理吗?我还有一个关于JDBC异常在spring批处理中跳过的问题。@JasminDan我稍后会看一看,如果我有想法,我会与你分享。如果你想使用Pageable限制结果,怎么办?@Kikin Sama我有空时会检查这个:
@Query(nativeQuery = true, value = "SELECT * FROM table_name "
+ "WHERE col_name = :name collate utf8_bin")
public List<EntityName> find(@Param("name") String name);
@Query(nativeQuery = true, value = "SELECT * FROM table_name WHERE "
+ "name COLLATE Latin1_general_CI_AI Like :name COLLATE Latin1_general_CI_AI")
public List<EntityName> find(@Param("name") String name);