Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据JPA-转义重音法语字符(é,á,è,è..)_Java_Postgresql_Spring Data Jpa - Fatal编程技术网

Java Spring数据JPA-转义重音法语字符(é,á,è,è..)

Java Spring数据JPA-转义重音法语字符(é,á,è,è..),java,postgresql,spring-data-jpa,Java,Postgresql,Spring Data Jpa,我使用SpringDataJPA方法名称查询来执行SQL查询,例如FindBynameContainssString名称来查找名称包含给定字符串的所有实体。但它只适用于确切的字符。我想知道如果用户输入了é,如何返回名称中包含字符é及其基本字符e的所有实体。谢谢。我认为Spring数据中不存在此功能 因为您使用的是PostgreSQL,所以您可以使用它来帮助您解决问题,此外,您还必须创建一个本机自定义查询,如下所示: @Query(nativeQuery = true, value = "SELE

我使用SpringDataJPA方法名称查询来执行SQL查询,例如FindBynameContainssString名称来查找名称包含给定字符串的所有实体。但它只适用于确切的字符。我想知道如果用户输入了é,如何返回名称中包含字符é及其基本字符e的所有实体。谢谢。

我认为Spring数据中不存在此功能

因为您使用的是PostgreSQL,所以您可以使用它来帮助您解决问题,此外,您还必须创建一个本机自定义查询,如下所示:

@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);