如何使用可嵌入对象映射 Neo4j 节点?

How to map a Neo4j node using embeddable objects?

我想问这在 Spring-Data-Neo4j (SDN)Neo4j OGM 中是否可行,因为我了解到SDN实际上在底层使用了Neo4j-OGM。

假设我有 2 个 Java 个对象需要映射到一个 单个 图形节点:

@NodeEntity
public class User {
    @GraphId
    private Long id;
    private ComplexInfo info;
}
@NodeEntity
public class ComplexInfo {
    @GraphId
    private Long id;
    private Long age;
    private String name;
}

这样,我将在 2 个节点 之间建立关系。 用户复杂信息

但是有没有办法将其映射为单个节点,其中[= =24=]ComplexInfo java 对象将保留在 User 节点中,并且将不存在 ComplexInfo 节点 ?

实际上,就好像我以这种方式映射了我的 User 对象:

@NodeEntity
public class User {
    @GraphId
    private Long id;
    private Long age;
    private String name;
}

我不想为此设置 2 个节点,因为 ComplexInfo class 只不过是可重用属性的集合,并且没有任何好处它与具有此属性的节点之间的关系。

我在这里假设您在 嵌入 之后将 ComplexInfo class 嵌入 User class。需要明确的是,这意味着 ComplexInfo 不会作为节点出现在数据库中,也无法通过 OGM 直接查找;它必须始终通过带注释的域对象的组合来访问。

正如 @troig 提到的那样,唯一的方法是升级到 OGM 的最新快照版本(2.1 GA 将于 12 月 12 日左右发布)。然后您可以按照 Jasper 的示例 here。使用您的域应该很容易。请记住删除 @NodeEntity 注释和 ComplexInfo 中的 @GraphId Long id 字段。