我有3个表:项目,用户和角色。现在,我想创建一个表Project2User2Role,其中包含嵌入式键id_project,id_user。

我在所有三个实体中都使用@OneToMany关系进行了尝试,但我认为我无法像这样构建它。

而且我还尝试自己构建一个Project2User2Role实体类,但是我必须创建一个没有@ManyToOne关系的idclass。

解决方案看起来如何?

最佳答案

reference manual说,您可以在嵌入的ID中嵌入关系:


  虽然JPA不支持Hibernate
  让您放置关联
  直接在嵌入式id组件中


因此,您应该定义一个ID为Project2User2RoleId类型的Project2User2Role实体:

@Entity
public class Project2User2Role {
    @EmbeddedId
    private Project2User2RoleId id;

    public User getUser() {
        return this.id.getUser();
    }

    public Project getProject() {
        return this.id.getProject();
    }

    // ...
}


Project2User2RoleId类如下所示:

@Embeddable
public class Project2User2RoleId {
    @ManyToOne(optional = false)
    @JoinColumn(name = "project_id")
    private Project project;

    @ManyToOne(optional = false)
    @JoinColumn(name = "user_id")
    private User user;

    @ManyToOne(optional = false)
    @JoinColumn(name = "role_id")
    private Role role;

    // constructor
    // getters
    // equals and hashCode
}

10-04 20:37