Hibernate запрос вернул неверную дату - PullRequest
0 голосов
/ 08 октября 2018

Когда я извлекаю дату из таблицы mysql, она всегда возвращает дату за 1 день до этого, формат даты - гггг-ММ-дд, поэтому, если у меня есть 2018-10-17, когда я печатаю результат, он приходит как 2018-10-16.Если я использую командную строку, чтобы проверить даты, они верны.Это метод внутри класса Dao, который извлекает даты:

public List<LocalDate> getDates(String username){
    List<LocalDate> dates;
    Query query = manager.createQuery("select date from Calendar where username =:username");
    query.setParameter("username",username);
    dates = query.getResultList();
    return dates;
}

Когда я распечатываю список, все даты печатаются за 1 день до того, как я был на моем sql.

Этокак я получаю даты в сервлете и использую hibernate для хранения дат в mysql.

String dateString = request.getParameter("date");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate dataInicial = LocalDate.parse(dataInicialString, formatter);

Тип данных, который я использую в mysql - DATE.Затем я использую hibernate, чтобы сделать все остальное для меня, если вам нужен какой-то фрагмент кода, который я не предоставил, пожалуйста, спросите меня.Спасибо заранее.

Извините за плохой английский!

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

я нашел, что нужно сделать, я изменил HQL-запрос, я точно не знаю, почему, но когда я делаю

Query query = manager.createQuery("select DATE_FORMAT(date,'%Y-%m-%d') from Calendar where username =:username");

, это работает !!!!

0 голосов
/ 08 октября 2018

Однажды у меня была эта проблема, и причина находилась в часовом поясе по умолчанию в моей конфигурации MySQL.Итак, сначала проверьте часовой пояс, который вы используете, с помощью следующего запроса.

SELECT @@global.time_zone;

Если это не нужный часовой пояс, попробуйте зайти в файл конфигурации MySQL и добавить следующую строку.

[mysqld]
default-time-zone = '00:00'

Не забудьте установить желаемый часовой пояс.Вам нужно будет перезапустить MySQL, чтобы изменения вступили в силу.Это изменение будет постоянным.

...