Chciałem sobie wybrać rekordy Expense z tabeli za pomoca Hibernate.. jak wygląda zapytanie? tak:
LocalDateTime startDateTime = ...
LocalDateTime endDateTime = ...
CriteriaBuilder builder = sessionFactory.getCurrentSession().getCriteriaBuilder();
CriteriaQuery<Long> criteriaQuery = builder.createQuery(Long.class);
Root<Expense> root = criteriaQuery.from(Expense.class);
criteriaQuery.select(builder.count(root));
builder.between(root.get("date").as(LocalDateTime.class), startDateTime, endDateTime);
Mógłby mi ktoś wytłumaczyć dlaczego niektóre elementy składania zapytań znajduja sie w criteriaQuery(tj. select), a niektóre w CriteriaBuilderze(np. between)? Nie można było tego zrobić w jednej klasie? Może to ma jakiś sens, którego nie potrafię dostrzec? We wcześniejszych wersjach wystarczyło zrobić
criteria.add(Restriction.ge(startDateTime));
criteria.add(Restriction.le(endDateTime()):
i wykonać zapytanie.. a teraz?