【问题标题】:How to mapping the relations between classes (@ManyToMany) for a table如何映射表的类(@ManyToMany)之间的关系
【发布时间】:2013-04-16 09:32:49
【问题描述】:

如何为唯一表映射三个类@ManyToMany 单向之间的关系?

关系是这样的:

  • 项目有很多任务
  • 许多任务有许多特定的活动(按标准) - 每个任务都有许多特定的活动
  • 任务和活动是数据库的标准配置。

所以,当我创建一个项目时,我会选择一些任务和一些任务的活动。

我想像这样创建一个表(project_task_activity_map):

 project_id     task_id    activity_id
    1            2           3
    1            2           4
    2            1           2
    2            1           1
    2            2           3
    2            3           5 

如何映射类 Project ?

参考链接:

See Orders Table

【问题讨论】:

  • 您的表和您链接到的订单表都没有被规范化。在这种情况下,创建正确的映射并不容易。你想要吗?

标签: java hibernate jpa orm hibernate-annotations


【解决方案1】:

我认为层次结构像

项目 | 任务 | 活动

项目和活动之间没有直接关系。

最好为任务和活动创建多对多表,仅将项目保持为主。 共 4 张桌子 - 项目 - 任务 - 活动 - 任务活动映射

第四张表将由 Hibernate 通过 Embadable 映射 Task 和 Activity 创建。

【讨论】:

  • 很好的解决方案,但是您知道是否有一些注释可以只维护三个类吗?喜欢:Project、Task、Activity 和 Project_Task_Activity_map(这个用一个注释创建)、表
  • 通过将所有内容放在一个表中,这将使数据冗余。如果它对你很好,那么好的
  • 您的 awnser 无效,因为通过 Embadable 为 Task 和 Activity 创建 Hibernate 映射不起作用! Embadable 仅对关系 @OneToMany 有用,对 @ManyToMany 无效。
  • 尝试在 google 上查找示例你会得到@ManyToMany 的想法,因为我在我的项目中使用了相同的方法并且它正在工作。目前,我有点忙,否则也会放相同的代码。
  • 我试过了,我阅读了休眠文档,但这是行不通的,一个 ID Embadable 与@ManyToMany 相关,为每种类型创建一个表。例如:在实体Task&Activity@ManyToManySet任务; @ManyToMany设置活动;创建另外 2 个表:Task&Activity_activitys、Task&Activity_tasks。你可以试试,这行不通。不幸的是。
猜你喜欢
  • 1970-01-01
  • 2012-10-10
  • 2017-07-18
  • 1970-01-01
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多