休眠标准 - 日期比较未返回正确的结果

时间:2015-08-10 15:56:52

标签: java mysql hibernate date orm

我正在尝试检索在用户输入提供的日期范围内发生的一组记录。由于某些原因,即使有记录应该匹配,标准也不会返回任何结果。

模型属性和样本数据:

@Column(name="date")
private Date date;

mysql> select * from student_interaction where id = X \G
*************************** 1. row ***************************
                 id: 23828
                 date: 2015-08-07 00:00:00
                 student_id: 2725
                 ... other columns ommitted
1 row in set (0.01 sec)

标准实施:

List<StudentInteraction> returnList = new ArrayList<StudentInteraction>();
    Criteria criteria = session.createCriteria(StudentInteraction.class);
    if(userID > 0) {
        List<Number> criteriaInList = new ArrayList<Number>();
        criteriaInList = session.createSQLQuery("select student_id from advisor_student where advisor_id = :userID").setInteger("userID", userID).list();
        if(criteriaInList != null && criteriaInList.size() > 0) {
            criteria.add(Restrictions.in("student.id", criteriaInList));
        }
    }
    criteria.add(Restrictions.ge("date", startDate));
    criteria.add(Restrictions.lt("date", endDate));
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    returnList = criteria.list();
    return returnList;

参数值:

  • startDate:8月15日星期三00:00:00太平洋标准时间14(日期)
  • endDate:8月15日星期四00:00:00 PST 15(日期)
  • criteriaInList:(1521,1840,1852,1914,5431,10748,29017,8056, 2725 ,5505)

如您所见,记录的日期属于提供的 startDate endDate ,记录的student_id值包含在 criteriaInList 中组。有谁知道为什么returnList出现[](空)?

1 个答案:

答案 0 :(得分:0)

您是否尝试直接在数据库上运行带参数值的生成的sql? 那些开始/结束日期GE和LT值是否满足查询?

您可能只想从删除条件和开始/结束日期标准开始,并一次添加一个标准。