Я пытаюсь получить набор записей, которые встречаются в диапазоне дат, предоставленных пользователем. По какой-то причине критерии не возвращают никаких результатов, даже если есть записи, которые должны совпадать.Критерий спящего режима - сравнение даты не возвращает правильные результаты
Свойство модели и выборки данных:
@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: ср 15 августа 00:00:00 PST 14 (Дата)
- endDate: Чт авг. 15 00:00:00 PST 15 (Дата)
- criteriaInList: (1521, 1840, 1852, 1914, 5431, 10748, 29017, 8056, , 5505)
Как вы можете видеть, дата ЗАПИСИ падает в поставленном STARTDATE и endDate, а значение student_id записи содержится в критерияхInList. Кто-нибудь есть идея, почему returnList выходит [] (пустой)?
Не могли бы вы сначала проверить с помощью жесткого кодирования 'id'? В вашем 'criteria.add (Restrictions.in (" student.id ", критерииInList))' replace 'criteriaInList' для' new String [] {"2725"} 'и посмотреть, что получится –
Во-первых, спасибо за ваш комментарий. Тем не менее, я получаю тот же результат, используя жесткий список. Проблема, по-видимому, не зависит от ограничения критериевInList, потому что даже когда она никогда не входит в условие (userID> 0), результат остается пустым. – rawkfist0215