Специальные символы с JPA, JDBC и mysql

Я использую JPA, JDBC а также MySQL для моего проекта Spring Boot. У меня проблемы с особыми персонажами. Если я пишу SQL-запрос через JdbcTemplateЭто просто отлично. Я могу вернуть символы "а". Но если это через JPAэти символы -s.

Сортировка схемы по умолчанию - utf8_hungarian_ci, а набор символов по умолчанию - utf8.

мой application.properties:

spring.jpa.database: MYSQL
spring.jpa.hibernate.ddl-auto: update   

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url: jdbc:mysql://localhost:3306/databasename?useUnicode=yes&characterEncoding=UTF-8
spring.datasource.username: root
spring.datasource.password: password

У меня есть две таблицы, user а также userrolesи они связаны с @ManyToMany отношения с объединяемым

User.java:

@ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(
            name = "user_userrole",
            joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
            inverseJoinColumns = @JoinColumn(name = "userrole_id", referencedColumnName = "id"))
    private List<UserRole> userRoles;
public List<UserRole> getUserRoles() {
        return userRoles;
    }

UserRole.java:

@ManyToMany(mappedBy = "userRoles")
    private List<User> users;

Когда я вызываю этот метод:

currentUser.getUserRoles();

все символы "á" заменяются на -s. Что мне не хватает?

РЕДАКТИРОВАТЬ:

Я добавил нового пользователя: árvíztűrő tükörfúrógép в базу данных. (Я мог бы сделать это без проблем, и, кстати, я тоже сохранил пользователя с помощью jpa.) Но когда я попытался войти в систему, я получил следующее исключение:

error":"Internal Server Error","exception":"java.io.CharConversionException"
,"message":"Not an ISO 8859-1 character: ű"

pom.xml:

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
</properties>

2 ответа

<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding" value="UTF-8" />

с hibernate 4.3.1 это работает:

<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">utf-8</property>

Пожалуйста, добавьте ниже в веб-XML

<filter>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <url-pattern>*</url-pattern>
</filter-mapping>
Другие вопросы по тегам