使用Javax注释和Hibernate处理三元关系

时间:2016-05-27 08:49:24

标签: java spring hibernate jpa ternary

我正在创建一个使用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;
    }

0 个答案:

没有答案