Итак, я настроил спящий режим с Wildfly и MySql.Java EE, Hibernate, MySql UTF-8 запрос не работает
Querying работает, но имеет проблемы с запросом на имена символов UTF-8.
На MySql:
SELECT * FROM users WHERE firstname = "ნიკა";
Не приводит пустое множество.
В то время как в Java:
Session session = HibernateUtils.getSession();
String name = request.getParameter("name");
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<UsersEntity> query = builder.createQuery(UsersEntity.class);
Root<UsersEntity> usersRoot = query.from(UsersEntity.class);
query.select(usersRoot)
.where(builder.equal(usersRoot.get("firstname"), name));
List<UsersEntity> list = session.createQuery(query).list();
session.close();
writeUsers(list, response.getWriter());
Результаты в пустом наборе при запросе localhost:8080/main?name=ნიკა
Как это исправить?
UPDATE:
У меня тоже есть вопрос, что при запросе всех данных и отображения их неанглийских символов заменяются вопросительными знаками.
UPDATE 2: Результаты
Этот код в показ вопросительные знаки в браузере:
response.getWriter().write("ნიკა ჩხარტიშვილი");
Хотя это один работает правильно:
response.setCharacterEncoding("UTF-8");
response.getWriter().write("ნიკა ჩხარტიშვილი");
При запросе базы данных с этим запросом База данных SELECT * FROM users WHERE username='ნიკა'
получает вопросительные знаки вместо ნიკა
(Это то, что sh происходит в проводах).
Я думаю, что это проблема wildfly, потому что он получил UTF-8 правильно, но отправляет вопросительные знаки, если только это не указано для отправки UTF-8.
, и если для теста вы можете жестко указать имя в коде, он также работает. Если это так, то это перевод, сделанный браузером. – davejal
@davejal Hardcoding не работает. – nikartix
В вашем примере SQL используется 'firstname =" ნიკა "'. Пример вашего URL использует 'localhost: 8080/main? Name = ნიკა'. Что произойдет, если вы закроете сеанс после вызова' writeUsers'? Что делает вызов 'writeUsers'? –