• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Własna metoda Hibernate z zapytaniem sql

VPS Starter Arubacloud
0 głosów
501 wizyt
pytanie zadane 26 lipca 2017 w Java przez Szymon Ciamaga Obywatel (1,980 p.)

Witam czy istnieje możliwość stworzenia dodatkowej metody do klasy repozytorium, w którym będę mógł wykonać własne zapytanie sql ?

tzn

mam np taki interface

@Repository
public interface UserRepository extends JpaRepository<UserProfile, Long> {
}

I chciałbym dodać mu dodatkową metodę, w której będę mógł wykonać zapytanie sql. 

Nie wiem jak utworzyć taką metodę (Mogę w interfejsie ale to tylko będzie deklaracja a mi potrzebna cała definicja) i też nie mam pojęcia w jaki sposób mogę wywołać zapytanie przez hibernate. Pozdrawiam.

2 odpowiedzi

0 głosów
odpowiedź 26 lipca 2017 przez xenonso Mądrala (5,160 p.)
wybrane 26 lipca 2017 przez Szymon Ciamaga
 
Najlepsza
Polecam sprawdzić sobie Spring Data, gdzie w interfejsie wystarczy odpowiednio napisać nazwę metody

(np. List<Employee> findTop3ByFirstName(String firstName);) a Spring na podstawie słów kluczowych sam odgadnie o co ci chodzi. Tutaj dokumentacja https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation
komentarz 26 lipca 2017 przez Szymon Ciamaga Obywatel (1,980 p.)
Dzięki link pomógł najbardziej !
komentarz 26 lipca 2017 przez xenonso Mądrala (5,160 p.)
Oczywiście ten sposób działa w przypadku wybierania danych z bazy, jeśli chodzi o wpisywanie/usuwanie danych z bazy to można użyć adnotacji @Query tak jak jest to w odpowiedzi niżej
0 głosów
odpowiedź 26 lipca 2017 przez Mateusz51 Nałogowiec (28,180 p.)

Przykład z mojego repozytorium

import java.util.Date;

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.sumarlidi.medieval.domain.MedievalEvent;



@Repository
public interface MedievalEventDAO extends CrudRepository<MedievalEvent,Long>{

	public Iterable<MedievalEvent> findByAccepted(@Param("accepted") Boolean accepted);
	
	public Iterable<MedievalEvent> findByAcceptedAndStartDateAfterOrderByStartDateAsc(@Param("accepted") Boolean accepted,@Param("date") Date date);
	
	@Query("SELECT DISTINCT e.startDate FROM MedievalEvent e WHERE e.accepted = :accepted ORDER BY e.startDate DESC")
	public Iterable<Date> findDistinctStartDateByAccepted(@Param("accepted") Boolean accepted);

	public Iterable<MedievalEvent> getEventByStartDateAndAccepted(Date startDate, Boolean accepted);
}

 

Podobne pytania

0 głosów
0 odpowiedzi 326 wizyt
pytanie zadane 11 czerwca 2017 w Java przez Jonki Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 1,459 wizyt
pytanie zadane 11 czerwca 2019 w Java przez JuniorPL Użytkownik (770 p.)
0 głosów
1 odpowiedź 448 wizyt
pytanie zadane 26 września 2022 w SQL, bazy danych przez randomName Nowicjusz (220 p.)

92,963 zapytań

141,928 odpowiedzi

321,161 komentarzy

62,297 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...