如何使用可嵌入对象映射 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
字段。
我想问这在 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
字段。