Spring Data JPA obsługuje liczenie jednostek przy użyciu specyfikacji. Ale czy ma jakikolwiek sposób zliczania jednostek przy użyciu rozpoznawania nazw metod? Powiedzmy, że chcę, aby metoda countByName
liczyła jednostki o określonej nazwie, tak jak metoda findByName
do pobierania wszystkich jednostek o określonej nazwie.
java
spring
spring-data-jpa
YaoFeng
źródło
źródło
Odpowiedzi:
Od wersji Spring Data 1.7.1.RELEASE można to zrobić na dwa różne sposoby:
1) Nowy sposób , wykorzystujący wyprowadzanie zapytań zarówno do zliczania, jak i usuwania zapytań. Przeczytaj to (przykład 5). Przykład,
2) Stary sposób , używając adnotacji @Query.
Przykład,
lub używając również adnotacji @Param,
Sprawdź też to, więc odpowiedz .
źródło
Dopóki nie używasz wersji 1.4, możesz użyć wyraźnej adnotacji:
przykład:
źródło
long
zamiastint
, w przeciwnym razie otrzymasz ClassCastException bez żadnych wskazówekJpaRepository rozszerza również QueryByExampleExecutor. Nie musisz więc nawet definiować niestandardowych metod w swoim interfejsie:
A następnie zapytanie takie jak:
źródło
int age
zostanie uwzględniony, chociaż nie ustawiony, aleInteger age
zostanie wykluczony z próbki (przynajmniej w Eclipselink)Ta funkcja została dodana w wersji 1.4 M1
źródło
Przykład roboczy
Wywołanie z warstwy DAO
źródło
Według Abla po wersji 1.4 (testowanej w wersji 1.4.3.RELEASE) można zrobić w ten sposób:
public long countByName (nazwa ciągu);
źródło
Najwyraźniej jest teraz zaimplementowany DATAJPA-231
źródło
Dziękuję wam wszystkim! Teraz jest praca. DATAJPA-231
Byłoby miło, gdyby można było stworzyć licznik… Metodami takimi jak znajdź… Jednymi. Przykład:
źródło
Zgodnie z wydaniem DATAJPA-231 funkcja nie została jeszcze zaimplementowana.
źródło
Pracuję nad tym dopiero od kilku tygodni, ale nie wierzę, że jest to całkowicie możliwe, jednak powinieneś być w stanie uzyskać ten sam efekt przy nieco większym wysiłku; po prostu napisz zapytanie samodzielnie i dodaj adnotację do nazwy metody. Prawdopodobnie nie jest to dużo prostsze niż samodzielne napisanie metody, ale moim zdaniem jest czystsza.
Edycja: jest teraz możliwa zgodnie z DATAJPA-231
źródło
źródło
Jeśli ktoś chce uzyskać liczbę na podstawie wielu warunków, oto przykładowe zapytanie niestandardowe
źródło