Hejka, mam problem :)
W mojej aplikacji mam klasy:
USER -> informacje o użytkowniku
GRUPA_PRZEDMIOTÓW -> nazwy grup przedmiotów
PRZEDMIOTY -> przedmioty.
Mniejsza o nazwy, są nieco inne, ale chciałbym nakreślić tym problem.
Wiadomo, że każdy przedmiot posiada informacje o grupie w jakiej się znajduje.
Chciałbym uzyskać coś w rodzaju ManyToMany:
USER -> PRZEDMIOTY
Stworzyłem w bazie osobną tabelę, która posiada:
- user_id
- przedmioty_id
Z jednej strony nie chcę tworzyć kolejnej encji do tej tabeli, nie chcę również tworzyć u usera informacji o przedmiotach jakie on posiada - to ma się dziać poza jego wyciąganiem z bazy.
Macie jakieś pomysły?
Myślałem, żeby utworzyć w encji PRZEDMIOTY adnotację @JoinTable wraz z kolumnami jedną do tej encji (przedmioty_id) a drugą inverse do encji USER (user_id), ale nie chcę wyciągając z tabeli kilka przedmiotów, w każdej przechowywać informację o użytkowniku, bo to mija się z celem...
Help!!
Dodam też, że podczas gdy użytkownik potrzebuje informacji o przedmiotach (a w takim wypadku potrzebuję również informacje o wszystkich przedmiotach) działa on tak:
1. wyciąga wszystkie grupy przedmiotów (mapa <id, nazwa>)
2. wyciąga wszystkie przedmioty (niezależnie czy użytkownik posiada któreś czy nie)
3. tworzy mapę <nazwa_przedmiotu, List<przedmiot>>
4. wyciąga informacje z tabeli łączącej o przedmiotach które posiada użytkownik (szuka po id usera)
5. iteruje po ostatniej liście i zaznacza w części wspólnej (wszystkich przedmiotów i przedmiotów użytkownika) i wpycha je do list w mapie stworzonej w pkt. 3 (wg nazw grupy)
6. taką mapę przesyłam dalej.
Może mięlibyście inny pomysł na rozwiązanie tego?
Do końca nie wiem jak się dobrać do tabeli łączącej używając JPA jeśli tabela łącząca nie jest encją...