代码之家  ›  专栏  ›  技术社区  ›  Albert

在不一致的数据库上休眠@manytoone

  •  2
  • Albert  · 技术社区  · 15 年前

    假设我有两个表,employee和department,其中emp有一个@manytoone department键。现在我希望能够从dept表中删除行,但要保留指向它的emp记录;基本上保存关系,以便在重新创建dept表时恢复关系。(这实际上发生在我们的系统中,但不是通过休眠,而是通过使用组合的、可复制的密钥)。

    问题是:Hibernate是否会在@Manytoone关系上崩溃?该关系似乎存在,但在@One部分中没有记录?(基本上是不一致的数据库状态)。

    我可能应该通过删除@manytoone关系来解决这个问题,并简单地将外键映射到一个字符串左右。我只是想知道我们是否能成功地让这段关系保持下去。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Pascal Thivent    15 年前

    现在,我希望能够从dept表中删除行,但要保留指向它的EMP记录;

    然后您必须从逻辑上而不是物理上删除它们(FK约束实际上会阻止您删除部门)。

    在@manytoone关系上,Hibernate会崩溃吗?该关系似乎存在,但在@one部分没有记录?

    你没有参照完整性吗(见上文)?但假设你破坏了诚信…也许你可以加载员工,但有些事情在某个时候会崩溃(加载关联时,如果不是以前)。

    我可能应该通过删除@manytoone关系来解决这个问题,并简单地将外键映射到一个字符串左右。我只是想知道我们是否能成功地让这段关系保持下去。

    逻辑删除部门。