JPQL zapytanie wyświetlające dane z kilku tabel

0

Witam, piszę w dalszym ciągu projekt Menadżer Zadań, napotkałem pewien problem z zapytaniem do bazy. Chcę wyświetlić w tableView zadania wraz z ich wykonawcą i zleceniodawcą. Wykonawca jest w tabeli User, zleceniodawca w tabeli Customer. Task z User połączona za pomocą tabeli łączącej zadania_uzytkownicy (@ManyToMany), jednak dalej jest problem, żeby połączyć się z Customerem to trzeba pierw z Tasku do Projektu potem dopiero do Customera

SELECT task.IdTask, task.Title, task.Status, customer.LastName, user.LastName FROM task join zadania_uzytkownicy on id_task join user on id_user join project on projectOwner join customer on IdCustomer

połączyłem, ale wynik nie jest zadowalający. Wyświetla mi wszystko razy ilośc userów razy ilość customerów. Źle sformułowane to zapytanie jest. Screen wszystko opisuje:

user image

Powinno być raptem 10-15 zadań a jest ich tysiące kombinacji.

Jest to zapytanie MySQL, jednak potrzeba mi JPQL.

0

Nie bardzo rozumiem jak to łączysz, nie zapomniałeś o dokładnym wskazaniu, jakie kolumny ma łączyć?

Np. chcesz pobrań zadania z danego projektu więc łączysz

select * from task 
join project on task.id_project=project.id_project

Do tego chcesz dodać wykonawcę, więc dodajesz:

join users on users.user_id=task.wykonawca_id

A potem jeszcze zleceniodawca, więc coś w stylu:

join customer on cutomer.customer_id=project.zleceniodawca.id

Nie znam struktury danych, ale mniej więcej tak to wygląda w SQL.

Korzystasz jednak z JPA, więc powinieneś wykorzystać jego możliwości. Tak jak zmapowałeś relację pomiędzy task a user, powinieneś zmapować relację pomiędzy projektem a wykonawcą, projektem a zadaniami, itd.
Wtedy bez problemu uzyskasz dostęp do wszystkich danych.

0

oki to przyatakuję mapowanie :P napiszę jakie są efekty za jakiś czas

0

Wiesz co zmapować zmapowałem, lecz nie do końca to hula jak należy, sam zobacz jak posypało errorami przy kompilacji, jednak tabele tworzy w workbenchu.
user image

Kod jednego mapowania (zmapowałem wszystko):

 
//Model User
@ManyToMany
@JoinTable(
name =" uzytkownicy_projekty", 
joinColumns ={@JoinColumn(name="id_project")},
inverseJoinColumns ={@JoinColumn(name="id_user")})
private List<Project> projekt;

//Model Project

	@ManyToMany(mappedBy = "projekt")
	private List<User> users;

W tem sam sposób pomapowałem resztę, coś z kluczami jest nie tak chyba.

0

dalej nie moge poradzić sobie z tymi errorami Shagrin

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