保存实体不会正确更新类层次标签

时间:2016-09-16 17:18:11

标签: neo4j-ogm

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

如果创建了一个SimpleReport,它会按预期附加标签“Report”和“SimpleReport”。

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

如果我现在保存这个ExtendedReport(使用与SimpleReport相同的ID,因为我只想更新它),它附加了标签“Report”,“SimpleReport”和“ExtendedReport”。

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

我问是否有更好的方法来存档,如果可能接近错误或者这是ogm中的错误?

1 个答案:

答案 0 :(得分:1)

标签规则如下:

  • 层次结构中的任何普通具体类都默认生成标签
  • 普通抽象类默认情况下不生成标签
  • 普通界面默认情况下不会生成标签
  • 任何使用@NodeEntity或@NodeEntity(label =“something”)注释的类生成标签
  • 不得允许空或空标签
  • 不要持久化的类/层次结构必须使用@Transient
  • 进行注释

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

修改

重命名类时,OGM不会删除标签。任何其他标签保持不变。

  • 您可以使用直接数据库访问手动删除它们。
  • 您可以声明带有@Labels注释的字段,以管理从实体添加/删除其他标签。