我想知道这在Spring-Data-Neo4j 还是Neo4j OGM中是可行的,因为我知道SDN实际上在底层使用Neo4j-OGM。
假设我有两个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对象的原始变量(包括字符串和包装器对象,如Long、Integer..etc)将持久化在用户节点中,并且不会存在ComplexInfo节点?
实际上,就好像我已经以这种方式映射了我的用户对象:
@NodeEntity
public class User {
@GraphId
private Long id;
private Long age;
private String name;
}我不想为此有两个节点,因为ComplexInfo类不过是一个可重用属性的集合,在它和具有该属性的节点之间建立关系没有好处。
发布于 2016-11-17 00:18:04
我在这里假设您是在将 ComplexInfo类嵌入到User类之后。明确地说,这意味着ComplexInfo不会作为节点出现在数据库中,并且不能通过OGM直接查找;必须始终通过带注释的域对象的组合来访问它。
正如@troig提到的,唯一的方法是升级到OGM的最新快照版本(2.1GA将在12月12日左右发布)。然后,您可以效仿Jasper的例子,here。使用您的域应该非常容易。只需记住删除@NodeEntity注释和ComplexInfo中的@GraphId Long id字段。
https://stackoverflow.com/questions/40624651
复制相似问题