gpt4 book ai didi

java - 为什么 Spring Data Neo4j 在节点上创建下划线前缀标签?

转载 作者:行者123 更新时间:2023-11-30 07:02:57 26 4
gpt4 key购买 nike

我意识到有人提出了类似的问题 here ,但我试图理解 SDN 方法背后的原因,以创建与我的类名匹配的标签,并创建相同的标签并以下划线为前缀。

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

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

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

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

当我将 Patient 实例保存到数据库时,它将具有三个标签:Person、Patient、_Patient。为什么我的节点不也有 _Patient 标签?

最佳答案

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

例如当你有相似的层次结构时

Person
Patient extends Person
EbolaPatient extends Patient

然后假设您保存类 Patient 的实例,那么节点将具有 _Patient 标签,当您保存 EbolaPatient 实例时,它将具有 _EbolaPatient 标签。

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

如何实现这一点的其他选择是找到位于类层次结构最下方的标签,这比使用额外的前缀标签要复杂得多。

要查看这是如何实现的详细信息,请参阅 LabelBasedNodeTypeRepresentationStrategy SDN项目中的类。

关于java - 为什么 Spring Data Neo4j 在节点上创建下划线前缀标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28728674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com