如何将hibernate关联映射从一个更改为多个'进入多对多的'?

时间:2014-10-22 10:42:34

标签: java sql database hibernate

必须更改实体之间的关系,并且我想知道更改关联映射类型以及db中已存在的数据是否正常传输是正常的吗?我试图找到有关它的信息,但没有找到。或者如果映射将被更改,则必须通过sql查询手动传输已存在的数据?感谢

2 个答案:

答案 0 :(得分:1)

如果关联已经使用了连接表,并且多对多的映射保持使用具有相同列名的相同连接表,则除了删除可能具有的unicity约束之外,您不必执行任何操作在连接表的其中一个ci = olumns上。

否则,是的,显然,您必须使用SQL或任何其他工具(FlywayDB,Liquibase等)迁移您的架构。

答案 1 :(得分:0)

我可以做到这一点:

让A和B成为原始表格。 将A-> B(N-1)移至A< -AB-> B(N-N)。

我必须这样做 - "删除"表A中的foreignkey列, 赞成将记录插入AB (由导致A和B的两个外键组成) 这就是全部。

  • 第一步:用多对多注释替换多对一注释。 和lauch hibernate在追加模式下生成N-N表
  • 第二步:在这个N-N表中插入记录,给出在你的1-N关系的剩余外键列中找到的内容。
  • 第三步:删除此外键列。