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

时间:2016-11-16 05:26:24

标签: java spring-data-neo4j spring-data-neo4j-4 neo4j-ogm

我在 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个节点之间建立关联。 用户 ComplexInfo

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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