如何在休眠中映射用户,部门,角色?



我在我的Web应用程序中使用hibernate 4。我有人员、部门和角色。顾名思义,一个人可以有多个角色,也可以有多个部门。但每个角色都特定于特定部门。我设计如下。

人.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<>();
}

部门.java

@Entity
@Data
public class Department implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@Column
private String name;
}

角色.java

@Entity
@Data
public class Role implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@Column
private String name;
}

根据上述设置,我不能向任何人添加多个部门。需要对此代码进行哪些更改,以便一个人可以拥有多个角色以及多个部门?任何建议。

您需要正确指定@OneToMany@ManyToOne关系。

此外,如果要检索Person及其DepartmentsRoles,反之亦然,则需要指定杰克逊@JsonManagedReference@jsonBackReference注释。

请查看以下示例,如果仍然遇到问题,请在此处再次发布。

一对多/多对一:http://fruzenshtein.com/bidirectional-many-to-one-association/

JsonManagedReference/JsonBackReference:http://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion

最新更新