当前位置: 首页 > 知识库问答 >
问题:

为什么SpringDataNeo4j在节点上创建下划线前缀标签?

方宜
2023-03-14

我意识到这里问了一个类似的问题,但是我试图理解SDN创建一个匹配我的类名的标签以及创建一个以下划线为前缀的相同标签背后的原因。

例如,我有一个病人类。当我通过我的Neo4j存储库创建我的@NodeEntity修饰的患者类,然后通过Neo4j网络控制台查询它时,我看到患者和_Patient作为标签。

作为对这个问题的扩展,假设我有以下表示节点的类继承层次结构:

@NodeEntity
public class Patient extends Person {
   //class definition here
}

@NodeEntity
public abstract class Person {
    //class definition here
}

当我将患者实例保存到数据库中时,它将有三个标签:Person、Patient、\u Patient。为什么我的节点也没有患者标签?

共有1个答案

蓟雪峰
2023-03-14

当层次结构有1个以上(非抽象)类时,前缀为u的标签允许SDN正确确定类型。

例如,当您选择类似的层次结构时

Person
Patient extends Person
EbolaPatient extends Patient

然后假设你保存了病人类的实例,那么节点将有_Patient标签,当你保存埃博拉病人实例时,它将有_EbolaPatient标签。

如果随后检索节点(例如,在个人存储库上使用findAll作为集合),SDN将正确地将实体实例化为Patient和EbolaPatient。

实现这一点的另一个选择是找到一个在类层次结构最底层的标签,这比使用附加前缀标签要复杂得多。

要了解如何实现此功能的详细信息,请参阅SDN项目中的LabelBasedNodeTypeRepresentationStrategy类。

 类似资料:
  • 当我使用SpringDataNeo4j在数据库中持久化节点时。它保留重复的节点,如“person”和“_person”。它都包含相同的数据。所以我想阻止sdn的这种行为。 我没有使用任何继承,只是每个类都有所有属性。 另外,如果我直接从neo4j服务器插入数据,sdn将无法获取它。

  • 问题内容: 我正在通过Java创建多个XML文件,到目前为止一切正常,但是现在尝试创建带有名称空间前缀节点的文件时遇到了问题,例如,使用已经重构的代码版本适用于没有名称空间的普通xml文件。 被抛出的错误是: 抱歉,德国人说“指定的XML符号无效”。 发生错误的代码行: 为了消除错误导致转义较长的字符串或那些行中的某些内容的可能性,我也尝试仅使用,但这会导致相同的错误。 这就是为什么我认为它与名称

  • 我已经实现了Custom edittext,具有自定义样式: 这是屏幕: 这里只有光标,现在当我再次选择光标时,我得到如下结果: 我不想要光标下方的黄色下划线。 这是在Moto g4和android 7.0中测试的。 编辑还在错误上下划线,如果我seterror和文本不可见的错误:

  • 我看到很多javafx代码如下所示: 我对为什么要这样做的解释很感兴趣(我还没有找到)。

  • 问题内容: 也许这是一个明显的答案,但是 为什么 地球上 会浏览器决定创建自己的供应商前缀之类的? 我的意思是:为什么我必须输入: 是否因为每个平台都认为“我们很酷,我们会想出一种 更好的 方法来制作圆角”?键入三行似乎是完全和莫名其妙的冗余。 问题答案: 这是因为这些功能是在规范到达最终发布阶段之前由供应商实施的。 供应商前缀确保与功能更改等没有冲突。 最初,供应商前缀的目的是允许浏览器制造商开

  • 问题内容: 在这里,它说,“注:意思是‘我不关心这个值’”,但是从JavaScript来了,我不明白是什么意思。 我可以打印这些功能的唯一方法是在参数前使用下划线: 没有下划线,我必须这样写,以避免出现任何错误: 我不理解此下划线用法。我何时,如何以及为什么使用这些下划线? 问题答案: 不同的用例有一些细微差别,但是通常下划线表示“忽略此”。 在声明一个新函数时,下划线告诉Swift调用时该参数不