Mam 2 encje - Event i AppUser i chciałbym zrobić listę uczestników wydarzenia. Pierwsze co przyszło mi do głowy to relacja @OneToMany Event - AppUser, ale przy takiej relacji nie można przetestować metody repozytorium do pobierania wydarzeń i uczestników bez dodawania adnotacji @Transactional nad testem, bo przy odwoływaniu się do listy uczestników poleci LazyInitializationException, a też nie chcę żeby uczestnicy byli pobierani za każdym razem, więc pobieranie EAGER odpada. Może lepiej byłoby stworzyć jakąś encję pośredniczącą? Jest możliwość w jednokierunkowej relacji @OneToMany w encji Event wskazania pola event, które nie jest kluczem głównym w encji EventsUsers? Jak zrobiłem relację dwukierunkową @OneToMany i @ManyToOne a wydarzenie miało np. 6 uczestników to przy zapytaniu z JOIN'EM miałem łącznie 7 zapytań, które zwracały ten sam wynik. Jak taką relację najlepiej zaprojektować?
@Entity
@Table(name = "events_users")
@NoArgsConstructor
@Getter
public class EventsUsers {
@EmbeddedId
private EventsUsersId id;
@Column(name = "event_id", nullable = false, insertable = false, updatable = false)
private Event event;
@Column(name = "user_id", nullable = false, insertable = false, updatable = false)
private Long userId;
public EventsUsers(Event event, Long userId) {
this.id = new EventsUsersId(event.getId(), userId);
this.event = event;
this.userId = userId;
}
}