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

Predicate - wycięcia fragmentu z daty i porównanie
KL
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:35
0

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

Mam w encji

Kopiuj
MovieEntity

pole

Kopiuj
releaseDate 

które jest datą zapisaną w tym formacie

Kopiuj
2017-10-15 23:27:32.416

Metoda przyjmuje dwa parametry

Kopiuj
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

Kopiuj
greatherThan    
lessThan

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

edytowany 5x, ostatnio: Klawiatur
Interpod
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 2 lata
  • Postów:81
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ć:
Kopiuj
if(releaseDate >= 01.01.2010 && releaseDate <= 31.12.2017)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.