Не записываются русские символы в БД Postgresql через hibernate
Всем привет. Не могу разобраться с записью русских символов в БД через hibernate. Имею примитивную программу на springmvc. Имею hibernate.properties с прописанными параметрами:
hibernate.driver_class=org.postgresql.Driver
hibernate.connection.url=jdbc:postgresql://localhost:5432/hibernate
hibernate.connection.username=postgres
hibernate.connection.password=admin
hibernate.connection.CharSet=utf8
hibernate.connection.characterEncoding=utf8
hibernate.connection.useUnicode=true
hibernate.dialect=org.hibernate.dialect.PostgreSQL82Dialect
hibernate.show_sql=true
Имею SpringConfig, где эти пропертиз беру из файла:
private Properties hibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", env.getRequiredProperty("hibernate.dialect"));
properties.put("hibernate.show_sql", env.getRequiredProperty("hibernate.show_sql"));
properties.put("hibernate.connection.CharSet", env.getRequiredProperty("hibernate.connection.CharSet"));
properties.put("hibernate.connection.characterEncoding", env.getRequiredProperty("hibernate.connection.characterEncoding"));
properties.put("hibernate.connection.useUnicode", env.getRequiredProperty("hibernate.connection.useUnicode"));
return properties;
}
Использую шаблонизатор thymeleaf, для него тоже прописываю кодировку, которая до использования hibernate точно работала:
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(applicationContext);
templateResolver.setPrefix("/WEB-INF/views/");
templateResolver.setSuffix(".html");
templateResolver.setCharacterEncoding("UTF-8");
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
resolver.setCharacterEncoding("UTF-8");
registry.viewResolver(resolver);
}
В pom.xml следующие версии:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<spring.version>5.2.1.RELEASE</spring.version>
<hibernate.version>5.4.28.Final</hibernate.version>
<encoding.type>UTF-8</encoding.type>
<project.build.sourceEncoding>${encoding.type}</project.build.sourceEncoding>
<project.reporting.outputEncoding>${encoding.type</project.reporting.outputEncoding>
<file.encoding>${encoding.type}</file.encoding>
</properties>
При этом записанные ранее через консоль русские символы читаю в html:
Пользователь Геннадий //записан через консоль
Пользователь Иван //записан через консоль
Пользователь Иван //записан через форму в html
Не работает как при использовании hibernate+DAO, так и при использовании Spring Data JPA+репозитории. Не могу понять что упустил
Код html страницы:
<!DOCTYPE html>
<html lang="en" xmlns:th = http://thymeleaf.com>
<head>
<meta charset="UTF-8">
<title>Новая книга</title>
</head>
<body>
<p>Заполни инфу</p>
<form th:method = "POST" th:action="@{/books/}" th:object = "${book}">
<label for="namebook">Введите имя книги:</label>
<input type="text" id="namebook" th:field = "*{namebook}">
<label for="year">Введите год написания:</label>
<input type="text" id="year" th:field = "*{yearOfProduction}">
<input type="submit" value="Добавить">
</form>
</body>
</html>