Spring Data budowanie zapytań z kilku tabel.

0

Witam. Używam w swojej aplikacji Spring Data i mam pytanie. Mam zapytanie, które potrzebuje dwóch tabel User oraz UserRole:

"select u from User u, UserRole ur where u.id = ur.user.id and ur.name = 'ROLE_EMPLOYEE'"

Czy da się w spring data napisać takie zapytanie za pomocą samej nazwy metody? Czy muszę używać adnotacji @Query tak jak zrobiłem:

	@Query("select u from User u, UserRole ur where u.id = ur.user.id and ur.name = 'ROLE_EMPLOYEE'")
	List<User> getEmployeeList();

Drugie pytanie. Czy da się zbudować zapytanie w samej nazwie w tym stylu:

	@Query("select t from Transfer t where t.userAccountFrom.id = :id or t.userAccountTo.id = :id order by t.data DESC")
	List<Transfer> getTransferAccount(@Param("id") Long id); 

Chodzi mi o to

 t.userAccountFrom.id 

że jeszcze musimy odwoływać się do podpola naszego pola.

0

Patrzyłem tam, ale nie znalazłem nic.

0

Tez nie widzialem joinow...co pokazuje trywialnosc tego rozwiazania

1

Rozumiem że w encjach masz zadeklarowane relacje?
Jak tak to robisz po prostu po nazwach pól czyli finaByUserRoleName(String name)

0

W nazwach metod są również obsługiwane or i and chyba, przetestuj.
Jak coś to masz na youtubie, kanał SpringLabs gdzie jest o spring data po polsku jakiś odcinek

1

W JPQL możesz używać joinów następująco: (przy założeniu, że encja User ma kolekcję roles)

select distinct u from User u left join u.roles ur where ur.name = 'ROLE_EMPLOYEE'

0

Jeśli chodzi o pierwszy problem, nie jestem do końca pewien odpowiedzi ale spróbuje. Takie coś powinno zadziałać:

List<User> findByUserRoleName(String name);

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