2014-04-02 9 views
13

My Wymagania:Wiosenne repozytorium CRUD: czy istnieje findOneByMaxXYZColumn()?

pobrać jeden obiekt (na przykład RetainInfo) z tabeli RETAIN_INFO jeśli kolumnowy ma wartość maksymalną

nieobsługującego repozytorium CRUD dla metody interfejsu jak

findOneByMaxRetVersionAndCountry("DEFAULT") 

Equivalent SQL DB2:

select RET_ID, max(ri.RET_VERSION) from RETAIN_INFO ri where ri. COUNTRY='DEFAULT' group by RET_ID fetch first 1 rows only; 
  • To zapytanie wybiera n ID, ale naprawdę chciałbym, aby obiekt RetainInfo odpowiadał wierszowi POJEDYNCZY zwracanemu przez zapytanie.

Wolę uzyskać to bez użycia niestandardowego zapytania, tj. Za pomocą findBy lub innej metody/interfejsu obsługiwanej przez Spring CRUD.

+0

Możliwy duplikat [MAX/MIN wartości z dokumentu MongoDB] (http://stackoverflow.com/questions/14425900/max-min-values-with -mongodb-document) – Wheezil

Odpowiedz

25

Można użyć ograniczenia w połączeniu z sortowaniem (spring data reference:limit query results). Zadeklarować metodę podobną do następujących w CrudRepository interfejsu:

RetainInfo findTopByCountryOrderByRetVersionDesc(String country); 
+2

To zaczęło być absurdalnie drogie, gdy biegałam na dużym stole. Zaimplementowałem go ręcznie za pomocą 'select max (t.field) z zapytania Table t' JPQL. –

Powiązane problemy