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查询,选择不同的用户。请注意,顺便说一句,没有发言者会收到事件的空集。该集合可能为空,但不为空。 –