我正在创建一个使用Rest Api来处理前端和数据库之间通信的应用程序。
Spring用于Java Api和Postgres作为数据库。
关键是我需要三个表之间的三元关系。我解释一下,我有三张桌子:
- 用户
- 角色
- 项目
每个用户都有一个特定的角色,具体取决于项目。 当我选择一个项目(在前面)时,我需要显示所有参与者的各自项目 那是我的课程:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
private String email;
@NotNull
@Column(name = "last_name")
private String lastName;
@NotNull
@Column(name = "first_name")
private String firstName;
@NotNull
private String password;
private String image;
@Entity
@Table(name = "projects")
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
private String name;
@NotNull
private Long version;
@NotNull
private Date date;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "user_profile_project", joinColumns = @JoinColumn(name = "project_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"))
private List<User> participants;
@Entity
@Table(name = "profiles")
public class Profile {
private Long id;
private String name;
private Set<Permission> permissions = new HashSet<Permission>(0);
public Profile(){}
public Profile(String name) {
this.name = name;
}
public Profile(String name, Set<Permission> permissions) {
this.name = name;
this.permissions = permissions;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name = "name", nullable = false)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}