继承 - 数据库关系

Inheritance - DB relations

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

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

br 马库斯

您做对了一切,只是遇到了 Cayenne 数据库导入功能的限制。它允许您仅自定义对象层,而不是数据库,因为它不会跟踪更改,只是在每个 运行.

上将您的模型与数据库状态进行比较

在这里你可以做些什么:

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

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