Я создал приложение в Java EE, которое использует Hibernate для связи с MySQL. Он отлично работает на моей машине разработки Windows, но у меня проблема на debian, где приложение развернуто.Hibernate, MySQL Кодирование не работает на debian
Когда я ищу ключевое слово с польскими буквами (например, ł, ą, ć, ó и т. Д.), Результат получается нормально в Windows, но на сервере, где я импортировал базу данных, он не работает.
Hibernate запрос выглядит следующим образом:
@NamedQuery(name = "Keyword.findByKeyword", query = "SELECT k FROM Keyword k WHERE k.keyword = :keyword")
и называется так:
myEntityManager.createNamedQuery("Keyword.findByKeyword").setParameter("keyword", keyword).getSingleResult();
Когда я использую MySQL на Debian с помощью SSH и введите в запросе на выборку вручную:
SELECT * FROM keywords WHERE keyword = 'ser żółty';
он также работает и возвращает один результат. Кодирование и сортировка таблиц и столбцов также в порядке. В конфигурации источника данных я добавил
?UseUnicode=true&characterEncoding=utf8
параметров, но это также не помогло. Я подумал, что, может быть, есть проблема с кодировкой в данных от отправки запроса по форме, но проблема возникает, даже если параметр i.e. "ser żółty" жестко закодирован в моем классе репозитория.
Я также использую Hibernate Search для индексирования, и FullTextEntityManager возвращает правильные результаты с польскими буквами.
Я предполагаю, что между Hibernate и MySQL существует некоторая проблема, но у меня нет больше идей, что я могу изменить. Какие-либо предложения?
Сервер Wildfly9.0.1, MySQL 5.6
'SELECT hex (col)' из таблицы для 'ser żółty'. Если он правильно сохранен, вы получите '73657220C5BCC3B3C5827479'. Это должно дать нам понять, к какому направлению обратиться дальше. –
Спасибо за ваш ответ. Я сделал SELECT hex (ключевое слово) FROM keyword WHERE keyword = 'ser żółty'; и я получил ровно 73657220C5BCC3B3C5827479. Любые подсказки? – swch