Predicate - wycięcia fragmentu z daty i porównanie

0

Tworzę bardziej zaawansowane zapytanie do bazy danych https://pastebin.com/8agGFWMQ. Napotkałem pewien problem.

Mam w encji

MovieEntity

pole

releaseDate 

które jest datą zapisaną w tym formacie

2017-10-15 23:27:32.416

Metoda przyjmuje dwa parametry

final Integer fromYear    - zakres od roku
final Integer toYear        - zakres do roku

Teraz chciałbym wyciąć z daty z bazy tylko rok i porównać czy większe/mniejsze od lat podanych jako parametry do metody. Nie mam pojęcia jak to zrobić. Chciałbym użyć metod

greatherThan    
lessThan

tylko jak wyciąć ten fragment? Chcę użyć do tego JPA Criteria i Predicate tak jak w kodzie na pastebin.

0

IMO lepiej by było użyć JPQL/HQL a annotacją @Query niż JPA Criteria + Predicate.
A wydobycie roku możesz załatwić na kilka sposobów:

  1. HQL'owe YEAR(..)
  2. Użycie SUBSTRING(...)
  3. Po co sobie komplikować? Jeżeli juz chciałbyś sprawdzić jake filmy mają releaseDate pomiędzy dwoma konkretnymi latami (np. 2010 a 2017) to można po prostu zrobić:
if(releaseDate >= 01.01.2010 && releaseDate <= 31.12.2017)

1 użytkowników online, w tym zalogowanych: 0, gości: 1