【问题标题】:Many to Many relation with dependency inversion与依赖倒置的多对多关系
【发布时间】:2019-05-24 09:48:16
【问题描述】:

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

  • 部门管理
  • 通信管理

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

通信管理也依赖于部门管理模块。 现在我想在DepartmentMailingGroup之间建立双向ManyToOne关系

@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 视为实体?
  • 这甚至可能是我想要做的吗?

【问题讨论】:

    标签: java spring hibernate jpa multi-module


    【解决方案1】:

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

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

    @OneToMany 关系意味着你可以有一个部门可以有很多沟通。

    双向意味着假设如果您在通信管理中执行任何操作,例如删除通信,它也会影响部门表。它将删除部门表中匹配的部门ID

    【讨论】:

    • 如果First Approach你的意思是第一个代码sn-p,它不会工作,因为这些实体在不同的模块中,问题是接口方法是否是多模块问题的有效解决方案
    猜你喜欢
    • 2022-11-20
    • 1970-01-01
    • 2012-05-04
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多