我在我的web应用程序中使用hibernate 4。我有Person,Department &角色。正如一个人的名字所能够拥有的不仅仅是角色,还有不止一个部门。但是每个角色都是针对特定部门的。我设计如下。如何在hibernate中映射用户,部门,角色?
Person.java
@Entity
@Data
public class Person implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@Column
private String name;
@JoinTable(name = "person_department_role",
joinColumns = @JoinColumn(name = "person_id"),
inverseJoinColumns = @JoinColumn(name = "role_id"))
@MapKeyJoinColumn(name = "department_id")
@ElementCollection
private Map<Department, Role> roleByDepartment = new HashMap<>();
}
Department.java
@Entity
@Data
public class Department implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@Column
private String name;
}
Role.java
@Entity
@Data
public class Role implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@Column
private String name;
}
甲根据上述设置,我不能向任何人添加多个部门。这个代码需要做什么改变,这样一个人可以拥有多个角色以及多个部门?任何建议。