我有三个实体Person
、Task
和Note
,它们的行为如下:
- 一个人可以有多个任务
- 一项任务可以分配给多个人
- 每个人都可以为一项任务附加多个注释
基于此,我有以下表格:
Person Task Person_Task Note Person_Task_Note
------- ---- ----------- ----------- ----------------
id id id id id
name name person_id description person_task_id
task_id note_id
具有以下关系:
Person
和Task
之间使用Person_Task
作为联接表的多对多- 使用
Person_Task_Note
作为联接表的Person_Task
和Note
之间的一对多
现在我正在尝试使用带有Hibernate的JPA2来映射这个结构。我的目标是在代码中只有三个具有以下选项的基本实体:
- 获取一个人的所有任务(
person.getTasks()
) - 获取个人任务的所有笔记(
task.getNotes()
)
我知道我可以将每个表映射到一个类,然后用一个胖的JPA标准查询检索必要的信息。
但是,我希望避免(如果可能的话)为联接表创建类。
如果我使用@ManyToMany
映射Person
和Task
之间的关系,我目前不知道如何进一步检索Note
条目
只通过使用JPA注释而不为联接表编写类来进行这种映射是否可行?
不,这是不可能的。您必须映射所有的表,并将Person和Task之间的ManyToMany转换为两个OneToMany关联。