在JPA中,实体的字段是否可以同时注释@ManyToMany和@ManyToOne?
这是我的表格:
Table1
- String id (pk)
- ...
Table2
- ...
- String object_id (fk Table1.id)
Table3
- ...
- String object_id (fk Table1.id)
这是我的实体(简称ofc):
Entity1 {
private Entity1PrimaryKey pk;
}
Entity2 {
private Entity1 entity1;
}
Entity3 {
private Entity1 entity1;
}
我会尽力解释:
@ManyToOne:Entity2和Entity3都有一个引用Entity1的字段。因此,存在多对一的关系。
@ManyToMany:在JPA查询中,我需要加入Entity2和Entity3。这是SQL中的查询:
SELECT fieldFromTable2,fieldFromTable3 从表2 INNER JOIN Table3 ON Table2.object_id = Table3.object_id;
因此,我认为我必须使用@ManyToMany。但是我遇到了一些错误。
所以我想知道:是否可以将@ManyToMany和@ManyToOne放在实体的同一个字段上?
答案 0 :(得分:0)
这不行吗?
SELECT t2.fieldFromTable2, t3.fieldFromTable3
FROM Table2 t2, Table3 t3
WHERE t2.entity1 = t3.entity1;
答案 1 :(得分:0)
简短回答:不,我不相信单个字段可以应用多个关系注释。这似乎暗示了,因为从概念上讲,两个Entites之间存在关系。
为了深入研究你的问题,我认为你误解了基于集合的关系的使用(@OneToMany,@ ManyToMany)。当实体与另一个实体的多个实例相关时,即table1中的行可以连接到table2中的多个行时,会发生这些情况。如果table1也与table3有关,那就是一个完全独立的关系。
OneToMany示例是学生可以发送许多电子邮件,但每个特定电子邮件只能由单个学生发送。
ManyToMany的例子是每个大学课程都有很多学生,每个学生都需要多门课程。
如果我们还想知道学生所有课程需要哪些书籍,那么这些书籍将与其他关系分开。