hibernate没有从mysql数据库中检索到给定日期的正确行

h4cxqtbf  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(236)

我有一个 Spring MVC 项目和a MySQL 具有包含以下行的表的数据库:

我有一个按日期获取行的函数 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" 日期,我得到一套空的。我不明白为什么会这样。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题