Мне нужно получить данные из базы. Есть две переменные LocalDate startDate и LocalDate endDate. Запрос может быть:
startDate-null- нужно выбрать все записи от startDate по текущую дату.
null-endDate-нужно выбрать все записи до endDate.
startDate-endDate- выбрать все записи от startDate до endDate.
null-null- выбрать все записи.
Метод поиска в базе:
CriteriaBuilder cb = manager.getCriteriaBuilder();
CriteriaQuery<Supply> query = cb.createQuery(Supply.class);
Root<Supply> supplyRoot = query.from(manager.getMetamodel().entity(Supply.class));
List<Predicate> predicates = new ArrayList<Predicate>();
if(startDate!=null && endDate!=null){
Predicate betweenPredicate = cb.between(supplyRoot.<LocalDate>get("arrivalDate"), startDate, endDate);
predicates.add(betweenPredicate);
}else if(startDate!=null && endDate == null){
Predicate greaterThanPredicate = cb.greaterThanOrEqualTo(supplyRoot.<LocalDate>get("arrivalDate"), startDate);
predicates.add(greaterThanPredicate);
} else if(startDate == null && endDate!= null){
Predicate lessThanPredicate = cb.lessThanOrEqualTo(supplyRoot.<LocalDate>get("arrivalDate"), endDate);
predicates.add(lessThanPredicate);
}
if(!predicates.isEmpty()){
query.where(cb.and(predicates.toArray(new Predicate[predicates.size()])));
query.select(supplyRoot);
}
return manager.createQuery(query).getResultList();
Проблема в том что при поиске между двумя датами возвращается только первое значение из базы. Например в базе есть дата 25.12.2016. Если сделать запрос на выбор с 24.12.2016 по 26.12.2016 то не находит ничего.
База MySQL, тип столбца date.
Подскажите где может быть проблема?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не могли бы вы описать, что нужно сделать по пунктам, чтобы подключить Google Play Services к своему приложению, а также сделать простой рейтинг участников
Есть приложения с несколькими экранами и активностямиКак можно сделать так, чтобы открывая активити2 оно не прекращало работу активити1,...