Spring数据的save方法导致丢失一些数据

时间:2017-03-10 12:19:27

标签: java spring spring-boot spring-data spring-data-jpa

我正在使用Spring启动+ Spring Data JPA + PostgreSQL。我只是包含一些字符串的类。

例如:

public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String name;
    private String surname;
}

我正在创造新人:

Person person = new Person(null, "Roman", "Brzęścikiewicz");

其中包含一些波兰符号,如“ę”和“ś”。 当我将其保存到数据库时:

personRepository.save(person);

然后我留下了保存在数据库中的人,该数据库收到了ID和姓名但不是姓氏的例子:

id;name;surname
1;Roman;

但是当我的姓氏没有波兰符号时,我在数据库中得到了正确的行:

id;name;surname
1;Roman;Brzescikiewicz

我的应用程序属性:

spring.datasource.url=jdbc:postgresql://localhost:5433/db
spring.datasource.username=user
spring.datasource.password=pass
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=validate

添加 ?了useUnicode =真放;的characterEncoding = UTF8 正如在stackoverflow上的一些问题所建议的那样无效。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

字符编码错误。 UTF-8!= utf8

characterEncoding=UTF-8

将其添加到您的jdbc网址

jdbc:postgresql://localhost:5433/db?useUnicode=yes&characterEncoding=UTF-8

您可以阅读相同情况的示例here

答案 1 :(得分:0)

解决。

其实这是非常愚蠢的问题。我正在使用PhpPgAdmin在数据库中搜索而phppgadmin有错误没有显示波兰符号...在pgadmin4中它正确显示,如果我通过Spring JPA在休息控制器中访问数据它也正常工作。