JPA 2复杂映射

时间:2012-12-07 14:19:41

标签: hibernate jpa

我有三个实体PersonTaskNote,其行为如下:

  • 一个人可以有多个任务
  • 可以为多人分配一项任务
  • 每个人都可以为任务附上多个附注。

基于此,我有以下表格:

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

与以下关系:

  • PersonTask之间的多对多使用Person_Task作为联接表
  • 使用Person_Task作为联接表的NotePerson_Task_Note之间的一对多

现在我正在尝试使用JPA2和Hibernate映射此结构。 我的目标是在代码中只使用具有以下选项的三个基本实体:

  • 为一个人(person.getTasks()
  • 获取所有任务
  • 获取一个人的任务的所有注释(task.getNotes()

我知道我可以将每个表映射到一个类,然后使用胖JPA条件查询来检索必要的信息。

但是,我想避免(如果可能的话)为连接表创建类。

如果我使用Person映射Task@ManyToMany之间的关系,我目前无法了解如何进一步检索Note条目

仅仅通过使用JPA注释而不为连接表编写类来进行这种映射是否可能?

1 个答案:

答案 0 :(得分:1)

不,这是不可能的。您必须映射所有表,并将Person和Task之间的ManyToMany转换为两个OneToMany关联。