У меня проблемы с кодировкой символов в моем тестовом классе JPA.
В моем h2 в базе данных памяти у меня есть этот запрос вставки:
INSERT INTO MYTABLE (ID,FIELD1,FIELD2) VALUES (100,'ABC','Réclamation');
(обратите внимание на символ «é» в «Заявлении»)
В моем тесте JUnit я пытаюсь утверждать, что значение столбца FIELD2 равно "Réclamation" (что, как вы можете видеть)
Но это не удается со следующей ошибкой:
org.junit.ComparisonFailure: ожидается: R [é] clamation, но было: R [�] clamation
Интересно, есть ли способ указать кодировку символов в файле persistence.xml (возможно? или где-то еще)
Вот мой тестовый файл persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence
version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="myTestPU">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>com.myproject.myclass1</class>
<class>com.myproject.myclass2</class>
<properties>
<property
name="javax.persistence.schema-generation.database.action"
value="none" />
<property
name="javax.persistence.sharedCache.mode"
value="ENABLE_SELECTIVE" />
<property
name="javax.persistence.jdbc.url"
value="jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'classpath:ddl/schema.sql'\;RUNSCRIPT FROM 'classpath:ddl/data.sql'" />
<property
name="javax.persistence.jdbc.driver"
value="org.h2.Driver" />
<property
name="hibernate.dialect"
value="org.hibernate.dialect.H2Dialect" />
<property
name="hibernate.show_sql"
value="true" />
<property
name="hibernate.format_sql"
value="true" />
</properties>
</persistence-unit>
</persistence>
Я уже пробовал эти решения:
добавление следующих свойств в тестовый файл persistence.xml:
<property name="hibernate.connection.characterEncoding" value="utf8" /> <property name="hibernate.connection.useUnicode" value="true" /> <property name="hibernate.connection.charSet" value="UTF-8" />
добавление
?useUnicode=yes&characterEncoding=UTF-8
в свой URL-адрес
Ни один из них у меня не работал ...
NB: я не использую Spring framework в своем приложении