0
public class User {
@ManyToMany(mappedBy = "speakers")
private List<Event> speakerEvents;
}
public class Event {
@ManyToMany
@JoinTable(name = "user_speaker_event",
joinColumns = {@JoinColumn(name = "event_id")},
inverseJoinColumns = {@JoinColumn(name = "calendar_user_id")})
private List<User> speakers;
}
我想選擇所有發言者=>我需要所有用戶spekaerEvents不爲空。春季多對多選擇
我使用Spring的數據,並試圖與法用戶庫,但它不工作。
它返回所有的音箱,但音箱複製(所以會出現5次用戶1,5次用戶2等)
public interface UserRepository extends JpaRepository<User, Long> {
List<User> getBySpeakerEventsIsNotNull();
}
我知道我可以使用@Query註解來選擇需要的用戶,但我可以」剔除它(查詢本身)。
我有這樣的事情,但它的工作方式相同。我覺得我需要在某處添加DISTINCT,但不知道如何。
SELECT *
FROM public.calendar_users
INNER JOIN user_speaker_event ON calendar_users.id = user_speaker_event.calendar_user_id
1.注意,查詢需要一個JPQL,而不是一個SQL查詢。 2.認識到JPQL與JPQL不同,值得學習,就像你學過SQL一樣。 3.打開hibernate手冊,在文檔中查找JPQL章節(閱讀整本手冊也是一個好主意)。 4.如果需要,閱讀本章,兩次或三次。 5.您現在應該至少可以嘗試JPQL查詢,選擇不同的用戶。請注意,順便說一句,沒有發言者會收到事件的空集。該集合可能爲空,但不爲空。 –