获取匹配日期/时间hibernate的记录

时间:2018-04-17 11:46:03

标签: java spring hibernate spring-mvc

我无法使用符合我给定日期时间的hibernate获取数据。

完成了什么:
我使用hibernate标准将记录插入到数据库中,在插入时,我将datetime添加到记录中,如下所示:

Foo.java

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DATE")
private Date inputDate;

现在,我从DB中获取前5个时间戳,如下所示:

FooDaoImpl.java

@Override
public List<java.sql.Timestamp> fetchTimeStamps() {
    Criteria criteria = getSession().createCriteria(FooDetails.class);
 criteria.setProjection(
    Projections.distinct(
        Projections.property("inputDate")));
    criteria.addOrder(Order.desc("inputDate"));
    criteria.setMaxResults(5);
    return criteria.list();
}

然后我将其转换为日期字符串并在我的视图中显示。现在,当用户选择任何给定的时间戳时,我将所选的字符串转换为日期并输入条件以获取与相同时间戳匹配的记录,如下所示:

@Override
public List<FooDetails> getFooDetails(Date date) {
    Criteria criteria = getSession().createCriteria(FooDetails.class);
    criteria.add(Restrictions.eq("inputDate", date);
    return criteria.list();
}

问题: 当我调用getFooDetails()时,它会获取空列表。为什么会这样?我究竟做错了什么?
日期格式为:&#34; MM-dd-yy HH:mm:ss&#34;

1 个答案:

答案 0 :(得分:0)

你必须改变这一行

criteria.add(Restrictions.eq("inputDate", date);

criteria.add(Restrictions.eq("inputDate", java.sql.Timestamp(date.getTime()));

通常你应该避免在时间戳上做相同的匹配,而是使用大于或小于比较。