保存实体不会正确更新 class-hierarchy 标签

Saving Entity does not update class-hierachy labels correctly

我有一个抽象超类 Report 和两个子类 SimpleReport 和 ExtendedReport,我想将它们保留在我的数据库中。

如果创建了 SimpleReport,它会按预期附加标签 "Report" 和 "SimpleReport"。

用户可以修改这样的SimpleReport,从而导致SimpleReport 成为ExtendedReport。

如果我现在保存此 ExtendedReport(使用与 SimpleReport 相同的 ID,因为我只是想更新它)它附有标签 "Report"、"SimpleReport" 和 "ExtendedReport"

恕我直言,保存时应删除标签 "SimpleReport"。我目前在保存更新的报告后使用密码查询删除了错误的标签。

我想问一下是否有更好的方法来存档它,如果方法有误或者这是 ogm 中的错误?

标签规则如下:

  • 层次结构中的任何普通混凝土class默认生成一个标签
  • 普通摘要class默认不生成标签
  • 普通界面默认不生成标签
  • 任何用@NodeEntity 或@NodeEntity(label="something") 注释的class 生成一个标签
  • 不得使用空标签或空标签
  • classes / 不被持久化的层级必须用@Transient注解

因此,如果您从基础 class 中删除摘要,或添加 @NodeEntity 注释,您将看到预期的结果。

编辑:

重命名 class 时,OGM 不会删除标签。任何其他标签均保持原样。

  • 您可以使用直接数据库访问手动删除这些。
  • 您可以使用 @Labels 注释声明一个字段来管理来自实体的 adding/removing 附加标签。