【问题标题】:Inheritance - DB relations继承 - 数据库关系
【发布时间】:2019-12-04 07:49:50
【问题描述】:

我正在使用 Cayenne 4.1 并希望使用单表继承,但我遇到的问题是,在使用建模器时,我在建模器中创建的数据库关系总是被删除:-/ 详细地: 我有表格和实体照片(超类),我有子类 photoA 和 photoB,在照片中我有一个字段(限定符),它的 id 是 A 类或 B 类,因为不可能直接保持这种矛盾的关系在数据库中,我在建模器中维护关系,所以我可以在实体类中使用它,这一切正常,除了当我运行重新设计数据库模式函数时关系被删除:-/

...但也许我理解错了这个概念:-(

br 马库斯

【问题讨论】:

  • 您能否提供有关您手动创建的关系的更多信息?也许简化了您的数据图的 XML?它是否以某种方式用作继承的限定符? os 是一个应该指向 A 或 B 实体并且不直接作为继承设置的一部分的普通关系吗?
  • 嗨,这里是 XML controlc.com/3b1ae16c的相关部分

标签: apache-cayenne


【解决方案1】:

您做对了,只是遇到了 Cayenne DB 导入功能的限制。它允许您仅自定义对象层,而不是 DB,因为它不会跟踪更改,并且只会在每次运行时将您的模型与 DB 状态进行比较。

你可以做些什么:

  • 不要对需要自定义的部分使用 DB 导入。这意味着您需要手动维护模型。这可能很难,因为您还需要排除模型的所有连接部分(这可能是您的所有模型)。不是很好的选择。

  • 或者,一个更好的选择。您可以尝试从 Modeler DB 导入切换到 Cayenne Maven(或 Gradle)插件。它支持按名称排除关系,它不像建模器那样容易设置,但在功能上它是相当的。以下是相关文档的一些链接:Maven plugin tutorialrelationship exclusion

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    相关资源
    最近更新 更多