我有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
}