我正在尝试检索在用户输入提供的日期范围内发生的一组记录。由于某些原因,即使有记录应该匹配,标准也不会返回任何结果。
模型属性和样本数据:
@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 和 endDate ,记录的student_id值包含在 criteriaInList 中组。有谁知道为什么returnList出现[](空)?
答案 0 :(得分:0)
您是否尝试直接在数据库上运行带参数值的生成的sql? 那些开始/结束日期GE和LT值是否满足查询?
您可能只想从删除条件和开始/结束日期标准开始,并一次添加一个标准。