JPA :带有@ManyToMany 和@ManyToOne 的字段

JPA : field with @ManyToMany and @ManyToOne

在 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;
}

我会尽力解释:

所以我想知道:是否可以将@ManyToMany 和@ManyToOne 放在实体的同一字段上?

这样不行吗?

SELECT t2.fieldFromTable2, t3.fieldFromTable3
FROM Table2 t2, Table3 t3
WHERE t2.entity1 = t3.entity1;

简短的回答:不,我不相信单个字段可以应用多个关系注释。这似乎是隐含的,因为从概念上讲,关系是两个实体之间的关系。

为了进一步研究您的问题,我认为您误解了基于集合的关系(@OneToMany、@ManyToMany)的使用。当一个实体与另一个实体的多个 实例 相关时,就会发生这些情况,即 table1 中的一行可以连接到 table2 中的多行。如果table1也和table3相关,那就是完全独立的关系了。

OneToMany 示例是一个学生可以发送多封电子邮件,但每封特定电子邮件只能由一个学生发送。

一个多对多的例子是每门大学课程都有很多学生,每个学生选修多门课程。

如果我们还想知道学生在所有课程中需要哪些书籍,那将与其他关系分开推导。