Hibernate не получает правильную строку, учитывая дату из базы данных MySQL - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть проект Spring MVC и база данных MySQL, в которой есть таблица со следующими строками:

enter image description here

У меня есть функция, которая получает строки по дате field:

@Override
public List listAllTimeSheetDetailsByDate(LocalDate date) {
    CriteriaBuilder cb = getSession().getCriteriaBuilder();
    CriteriaQuery<TimeSheetDetails> cr = cb.createQuery(TimeSheetDetails.class);
    Root<TimeSheetDetails> root = cr.from(TimeSheetDetails.class);
    cr.select(root).where(cb.equal(root.get("date"), date));
    Query<TimeSheetDetails> query = getSession().createQuery(cr);
    List<TimeSheetDetails> results = query.getResultList();
    return results;
}

Я использую реализации Hibernate getCriteriaBuilder() и createQuery().

Проблема в том, что когда я хочу получить строку с датой 2018-11-03, я получаю строку, соответствующую дате 2018-11-02. Я использую LocalDate, поэтому дни месяца не начинаются с 0. Вот Hibernate's Log:

INFO    [default task-4] stdout  - Hibernate: select timesheetd0_.timeSheetDetailsId as timeShee1_2_, timesheetd0_.date as date2_2_, timesheetd0_.employeeId as employee3_2_, timesheetd0_.endTime as endTime4_2_, timesheetd0_.startTime as startTim5_2_ from TimeSheetDetails timesheetd0_ where timesheetd0_.date=?
**TRACE   [default task-4] org.hibernate.type.descriptor.sql.BasicBinder  - binding parameter [1] as [DATE] - [2018-11-03]**
TRACE   [default task-4] org.hibernate.type.descriptor.sql.BasicExtractor  - extracted value ([timeShee1_2_] : [INTEGER]) - [4]
**TRACE   [default task-4] org.hibernate.type.descriptor.sql.BasicExtractor  - extracted value ([date2_2_] : [DATE]) - [2018-11-02]**
TRACE   [default task-4] org.hibernate.type.descriptor.sql.BasicExtractor  - extracted value ([employee3_2_] : [VARCHAR]) - [3]
TRACE   [default task-4] org.hibernate.type.descriptor.sql.BasicExtractor  - extracted value ([endTime4_2_] : [TIME]) - [05:00]
TRACE   [default task-4] org.hibernate.type.descriptor.sql.BasicExtractor  - extracted value ([startTim5_2_] : [TIME]) - [01:00]

Я не понимаю, почему он получает предыдущую дату. Кроме того, когда я хочу получить дату "2018-11-30", я получаю пустой набор. Я не понимаю, почему это происходит.

...