【问题标题】:How to map User,Department,Role in hibernate?如何在休眠中映射用户,部门,角色?
【发布时间】:2017-08-05 05:15:57
【问题描述】:

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

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;

}

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

【问题讨论】:

  • 嗨 Rajesh,你能解决它吗?以下答案是否有帮助,或者您是否能够自己找到解决方案。如果您找到了解决方案,您可以在这里分享它作为答案吗?

标签: java hibernate hibernate-mapping hibernate-annotations


【解决方案1】:

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

此外,如果您希望使用 DepartmentsRoles 检索 Person,反之亦然,您还需要指定 Jackson @JsonManagedReference@jsonBackReference 注释。

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

OneToMany/ManyToOne: http://fruzenshtein.com/bidirectional-many-to-one-association/

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2020-11-17
    • 1970-01-01
    • 2011-11-25
    相关资源
    最近更新 更多