通过第三个实体关联两个实体

时间:2015-07-09 14:25:20

标签: spring hibernate jpa

我试图弄清楚如何使用他们两个共同的另一个实体来关联两个实体。我的模型如下:

A Customer has a list of Codes
A Promotion has a list of Codes
A Code has a list of Customers and a list of Promotions

我想在促销实体中添加一个客户列表。此列表将包括至少具有与促销中相同代码的所有客户(可以有更多)。理想情况下,我想模拟这个字段,但我不确定这是否可行。我没有找到任何信息。

可以吗?

谢谢,

2 个答案:

答案 0 :(得分:0)

您可以定义

  1. 客户实体。
  2. 与Customer有@ManyToMany关系的代码实体。 (如果客户即使没有促销也可以拥有代码,则需要这样做。)
  3. 与客户有@ManyToMany关系的促销实体 和@ManyToMany代码。

答案 1 :(得分:-1)

最后我最终做了以下

public Set<Customers> getCustomers(){
    Set<Customers> customers = null;
    for (Code c : codes)
        if(customers == null)
            customers = c.getCustomers();
        else
            customers.retainAll(c.getCustomers());


    return customers;
}

我为代码执行Eager检索,并在代码中为客户检索Eager。到目前为止表现良好,但我更希望这一切都在DBMS中计算,而不是在控制器端计算。仍然没有找到一个很好的方法。