Ограничения между по дате в критериях гибернации

#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();