Database JPA多层关系

Database JPA多层关系,database,database-design,jpa,jpa-2.0,Database,Database Design,Jpa,Jpa 2.0,我有一个问题,我被卡住了:(。我必须建立一种关系的关系(奇怪!)。 例如,我有一个关系,其中一个实体a可以有多个B(一个实体) 现在我需要另一个关系,其中一个实体C将与A和B之间的复合关系有一对一的关系 C--> (A--->B) , not C-->A-->B 并不是说C与a有关系,a与B有关系,它应该类似于C-->D(a-->B) 生成的联接表在JPA中没有任何主键,现在我正在考虑如何映射此关系。请注意,还需要普通的A-->B,因为它不能嵌入,并且应该是持久的

我有一个问题,我被卡住了:(。我必须建立一种关系的关系(奇怪!)。 例如,我有一个关系,其中一个实体a可以有多个B(一个实体)

现在我需要另一个关系,其中一个实体C将与A和B之间的复合关系有一对一的关系

C--> (A--->B)  , not C-->A-->B  
并不是说C与a有关系,a与B有关系,它应该类似于C-->D(a-->B)

生成的联接表在JPA中没有任何主键,现在我正在考虑如何映射此关系。请注意,还需要普通的A-->B,因为它不能嵌入,并且应该是持久的

谢谢

例如: 位置和事件是我的两个实体,我想在其上关联CleanPlan。这意味着一个CleanPlan与位置-1的事件-1相关。因此我指定在事件-1中的位置-1上有一个CleanPlan。这有意义吗

我想说

或者,这取决于事件位置基数


在JPA中,这个问题有两个方面。 1) 映射表是用括号括起来的。 2) 将创建映射行而不是映射表


我认为第二种选择会让你的生活更轻松。但这只有在事件和位置具有单向关系时才可能实现。然后在许多一侧,放上“mappedBy”。这将在manytone表上生成一个映射表。您可以参考CleanPlan表中的这一列。

您能给我们一个真实的例子吗?描述实际的实体。例如,位置和事件是我的两个实体,我想将其关联起来。表示一个清洁计划与位置1的事件1相关。因此,我指定在事件1中的位置1上有一个cleanplan。这有意义吗?非常感谢,是的,但是如何在JPA中做到这一点呢?我应该创建一个名为EventLocation的类吗?如果是的话,那么如果我有10个实体,并且想要在它们之间建立这种关系,那么将会有太多的实体classes@Shahriar,你是说东西太多了吗?这就像一个关联类。不,从JPA实体的角度考虑,在我的事件实体中,我将@OneToMany与Location关联,因此创建了查找表eventlocation,但我不将其用作Java实体类。现在,如果我想将CleanPlan实体与此查找表关联,我应该在哪一部分以及如何声明我的关联。我需要写那个EventLocation类,然后在CleanPlan实体类中写@OnetoOne EvenLocation吗?像这样吗?我会创建一个单独的类,因为您确实需要一个关联类,而不仅仅是使用默认映射。
C--> (A--->B)  , not C-->A-->B