#hibernate
#гибернация
Вопрос:
Здравствуйте, я использую гибернацию в моем примере.Для пробной проверки таблицы компонентов я хочу получить пробную проверку между диапазоном дат с включением верхнего и нижнего пределов. Мой код выглядит следующим образом
Criteria criteria = session.createCriteria(AuditTrail.class);
criteria.add(Restrictions.between("auditDate", sDate, eDate));
Моя начальная дата — 25/11/2010
. и конечная дата — 25/05/2011
.Но это дает результат только до 24/05/2011
.Он не выполняет инклюзивный поиск.Любой другой способ сделать это.
Я использую SQL Server.
Ответ №1:
Я предполагаю, что ваш auditDate на самом деле является отметкой времени. Если это так, то это нормально, потому что 25/05/2011 означает 25/05/2011 в 0 часов (утра). Итак, конечно, каждая строка, имеющая временную метку аудита в дате 25/05/2011, находится после 0 часов утра.
Я бы добавил 1 день к вашей конечной дате и использовал auditDate >= sDate and auditDate < eDate
.
criteria.add(Restrictions.ge("auditDate", sDate));
criteria.add(Restrictions.lt("auditDate", eDate));
Комментарии:
1. Подсказка: если вам не нужно иметь дело с компонентом времени, подобным описанному выше, вы могли бы просто использовать
le(..)
(вместоlt(..)
беспорядочная арифметика даты).
Ответ №2:
criteria.add(Restrictions.between("DATE(auditDate)", sDate, eDate));
используйте это для игнорирования времени из даты.
Комментарии:
1. Это выдает ошибку: «не удалось разрешить свойство: ДАТА (auditDate)»
Ответ №3:
criteria.add(Restrictions.ge("fromDate", DateUtil.persianToGregorian(currentDate)));
criteria.add(Restrictions.le("toDate", DateUtil.persianToGregorian(currentDate)));
return criteria.list();
Ответ №4:
добавьте еще один день к дате окончания
@Autowired
private SessionFactory sessionFactory;
String startDate = "2019-07-31 ";
String endDate = "2019-08-24 ";
Date fromDate = format.parse(fromDate);
/* Add one more day to the end date*/
Date to =format.parse(endDate);
Calendar today = Calendar.getInstance();
today.setTime(dateto);
today.add(Calendar.DAY_OF_YEAR, 1);
Date toDate= format.parse(format.format(today.getTime()));
Criteria crit = sessionFactory.getCurrentSession().createCriteria(model.class);
crit.add(Restrictions.between("dateFieldName", fromDate, toDate));
List result = crit.list();