与依赖倒置的多对多关系

时间:2019-05-24 09:48:16

标签: java spring hibernate jpa multi-module

我有一个包含两个模块的多模块应用程序:

  • 部门管理
  • 通讯管理

现在我的department-management中有一个实体Department,在communication-management模块中,我有MailingGroup实体。

通信管理还取决于部门管理模块。 现在我想在ManyToOneDepartment之间建立双向MailingGroup关系

@Entity
public class Department {

   @OneToMany(mappedBy = "department")
   List<MailingGroup> mailingGroups;
}


@Entity
public class MailingGroup{

   @ManyToOne
   @JoinColumn(name = "DEPARTMENT_ID")
   Department department;
}

这当然不是上述方式可存档的,但是我可以使用接口来存档这种双向关系吗?我最初的想法是像这样解决它:

public interface MailingGroupProvider {
    Department getDepartment()
}

@Entity
public class Department {

   @OneToMany(mappedBy = "department")
   List<MailingGroupProvider> mailingGroups;
}


@Entity
public class MailingGroup implements MailingGroupProvider {

   @ManyToOne
   @JoinColumn(name = "DEPARTMENT_ID")
   Department department;
}

但这引起了疑问:

  • 在这种情况下,这是首选的解决方案吗?
  • JPA应该将我的界面提供哪些方法视为实体?
  • 这甚至可能是我想做的吗?

1 个答案:

答案 0 :(得分:0)

第一种方法是完美的:您需要在两个实体侧都添加一个关系。

departmentid是邮件组Table的外键。在实体双方都应用关系,它将起作用。

@OneToMany Relationship意味着您可以拥有一个部门可以进行多次沟通。

双向表示假设您在通讯管理中执行任何操作(如删除通讯),也会影响部门表。它将删除部门表中匹配的部门编号