我在 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 的原始变量(包括String和包装器对象,如Long,Integer..etc) java对象将保留在User节点内,并且不存在 ComplexInfo 节点?
实际上就好像我以这种方式映射了我的用户对象:
@NodeEntity
public class User {
@GraphId
private Long id;
private Long age;
private String name;
}
我不想为此设置2个节点,因为 ComplexInfo 类只不过是可重用属性的集合,并且它与节点之间存在关系没有任何好处拥有这些属性。
答案 0 :(得分:2)
我在这里假设您正在 嵌入 ComplexInfo
类进入User
类。要明确这意味着ComplexInfo
不会作为节点出现在数据库中,也不能通过OGM直接查找;必须始终通过带注释的域对象的组合来访问它。
正如@troig
提到的唯一方法是升级到OGM的最新快照版本(2.1 GA将在12月12日左右出来)。然后,您可以关注Jasper的示例here。使用您的域名应该非常容易。请记住删除@NodeEntity
中的@GraphId Long id
注释和ComplexInfo
字段。