Spring 如何从@many-to-many-created基地获取用户
我创建了两个类User和Events。它们与多对多注释相关联。我需要找到如何从一个事件获取所有用户,或者如何从一个用户获取所有事件的一些变体 我试图找到一些指南,但没有找到 用户类Spring 如何从@many-to-many-created基地获取用户,spring,spring-data-jpa,Spring,Spring Data Jpa,我创建了两个类User和Events。它们与多对多注释相关联。我需要找到如何从一个事件获取所有用户,或者如何从一个用户获取所有事件的一些变体 我试图找到一些指南,但没有找到 用户类 @Entity @Table(name = "usr") public class User implements UserDetails { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id", up
@Entity
@Table(name = "usr")
public class User implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@NotNull
@Column(nullable = false, length = 40)
private String username;
@NotNull
@Column(nullable = false, length = 60)
private String password;
private boolean active;
@ElementCollection(targetClass = Role.class , fetch = FetchType.EAGER)
@CollectionTable(name = "user_role" , joinColumns = @JoinColumn(name = "user_id"))
@Enumerated(EnumType.STRING)
private Set<Role> roles;
@ManyToMany
@JoinTable (name="user_event",
joinColumns=@JoinColumn (name="user_id"),
inverseJoinColumns=@JoinColumn(name="event_id"))
private List<Events> events;
}
@实体
@表(name=“usr”)
公共类用户实现UserDetails{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“id”,updateable=false,nullable=false)
私人长id;
@NotNull
@列(nullable=false,长度=40)
私有字符串用户名;
@NotNull
@列(nullable=false,长度=60)
私有字符串密码;
私有布尔活动;
@ElementCollection(targetClass=Role.class,fetch=FetchType.EAGER)
@CollectionTable(name=“user\u role”,joinColumns=@JoinColumn(name=“user\u id”))
@枚举(EnumType.STRING)
私人设定角色;
@许多
@JoinTable(name=“user\u事件”,
joinColumns=@JoinColumn(name=“user\u id”),
inverseJoinColumns=@JoinColumn(name=“event\u id”))
私人列表活动;
}
事件类
@Entity
@Table(name = "events")
public class Events {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(nullable = false, length = 40)
private String place;
@Column(nullable = false, length = 40)
private String title;
@Column(nullable = false, length = 2048)
private String text;
@Basic
@Temporal(TemporalType.DATE)
@Column(name = "dateStart")
private java.util.Date dateStart;
@Basic
@Temporal(TemporalType.DATE)
@Column(name = "dateEnd")
private java.util.Date dateEnd;
@ManyToMany
@JoinTable(name="student_university",
joinColumns=@JoinColumn(name="event_id"),
inverseJoinColumns=@JoinColumn(name="user_id"))
private List<User> universities;
}
@实体
@表(name=“events”)
公开课活动{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
@列(nullable=false,长度=40)
私人弦乐场;
@列(nullable=false,长度=40)
私有字符串标题;
@列(nullable=false,长度=2048)
私有字符串文本;
@基本的
@时态(TemporalType.DATE)
@列(name=“dateStart”)
private java.util.Date dateStart;
@基本的
@时态(TemporalType.DATE)
@列(name=“dateEnd”)
私有java.util.Date-dateEnd;
@许多
@JoinTable(name=“学生大学”,
joinColumns=@JoinColumn(name=“event_id”),
inverseJoinColumns=@JoinColumn(name=“user\u id”))
私立大学名单;
}
现在呢。。。我需要的东西应该给我的事件由用户id或用户由事件id在控制器。我不知道怎么做。公共界面用户存储库扩展了JpaRepository{
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findAllByEventsId(Long id)
}
public interface EventRepository extends JpaRepository<Event, Long> {
List<Event> findAllByUniversitiesId(Long id)
}
列表findAllByEventsId(长id)
}
公共接口事件存储库扩展了JpaRepository{
列表FindAllByVersionId(长id)
}
然后在控制器中使用这些存储库方法。您可以加入表
public class User {
@ManyToMany
@JoinTable(name = "a_user_event",
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "event_id", referencedColumnName = "id"))
private List<Events> events;
}
public class Events {
@ManyToMany(mappedBy = "events")
private List<User> users;
}
公共类用户{
@许多
@JoinTable(name=“a\u user\u事件”,
joinColumns=@JoinColumn(name=“user\u id”,referencedColumnName=“id”),
inverseJoinColumns=@JoinColumn(name=“event\u id”,referencedColumnName=“id”))
私人列表活动;
}
公开课活动{
@许多(mappedBy=“事件”)
私人名单用户;
}
在您的存储库中
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u FROM User u inner join u.events e WHERE e.id = ?1")
public List<User> findUsersByEventId(long eventId);
}
public interface EventRepository extends JpaRepository<Events, Long> {
@Query("SELECT e FROM User u inner join u.events e WHERE u.id = ?1")
public List<Events> findEventsByUserId(long userId);
}
public interface UserRepository扩展了JpaRepository{
@查询(“从用户u内部连接u.e中选择u,其中e.id=?1”)
公共列表FindUserByEventId(长eventId);
}
公共接口事件存储库扩展了JpaRepository{
@查询(“从用户u内部连接u.e中选择e,其中u.id=?1”)
公共列表findEventsByUserId(长用户标识);
}