使用日期列的HQL查询

时间:2011-03-24 17:47:52

标签: hibernate hql

我正在尝试创建一个查询,该查询将根据createDate字段是否落在表示日期的传递字符串之后返回Person对象列表。

我的createDate字段在我的Person类

中映射如下
@Basic(optional = false)
@Column(name = "CREATE_DATE")
@Temporal(TemporalType.DATE)
private Date createDate;

我在日期之后查找所有人的结果的功能如下所示。

public List<Person> searchDate(String startDate) {

     Session session = getSessionFactory().openSession();

     String s_query = "FROM Person as p WHERE p.createDate >= :date";
     Query query;
     DateFormat df = new SimpleDateFormat('dd-MMM-yy');

     try {
        Date dt = df.parse(startDate);
        query = session.createQuery(s_query).setDate("date", dt);

     } catch(ParseException e){} 

     return (List<Person>)query.list();

}

1 个答案:

答案 0 :(得分:2)

我没有看到任何问题。代码应该工作。你可以试试这个。

public List<Person> searchDate(String startDate) {
    Calendar cal = Calendar.getInstance();
    cal.set( year, month-1, day );
    Date createDate = cal.getTime();
    Session session = getSessionFactory().openSession();
    Criteria criteria = session.createCriteria(Person.class ); 
    criteria.add( Restrictions.eq( "createDate", createDate) ); 
    return criteria.list();;
}

我希望这会有所帮助。如果在这里讨论有什么问题,因为讨论是一种学习方式。