当前位置: 首页 > 知识库问答 >
问题:

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

庄欣然
2023-03-14

我问这在Spring-Data-Neo4j(SDN)或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;
}

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

但是,有没有一种方法将其映射为一个单一的节点,其中的基本变量(包括String和包装对象,如Long,整数... etc)的ComplexInfo java对象将持久化在User节点中,并且不会存在ComplexInfo节点?

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

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

我不想为此有2个节点,因为ComplexInfo类只不过是一个可重用属性的集合,它和具有该属性的节点之间没有关系。

共有1个答案

卢出野
2023-03-14

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

正如@troig提到的,唯一的方法是升级到OGM的最新快照版本(2.1 GA将在12月12日左右推出)。然后,您可以在这里学习Jasper的示例。使用您的域应该很容易。只需记住删除@NodeEntity注释和@GraphId Long id字段(位于ComplexInfo)。

 类似资料:
  • 我正在使用下面的代码片段映射对象 它没有映射,但当我添加这个时,它工作得很好 但却无法理解它的功能<代码>导入={Instant.class,DateTimeFormatter.class}它如何帮助映射对象?

  • 我创建映射如下所示。如何将平面dto对象属性(街道、城市等)映射到域对象中的嵌套地址。当我试着去做的时候,我发现了一个错误: [错误]诊断:返回类型中的属性“Address.PostalCode”未知。@Mapping(来源=“City”,目标=“Address.City”), 还有类...

  • 我正在尝试使用ModelMapper映射对象树。 我创建了一个例子来说明我的问题: 类包含多个属性 类包含类型为Sub的对象和(至少)另一个属性 类目标包含一个简单的属性列表 源属性和目标属性的类型不同 代码: 我正在寻找一种配置单个ModelMapper实例的方法,以便满足以下约束: modelMapper能够将Sub类型的对象转换为目标对象 不幸的是,行<代码>映射(source.sub,de

  • 你好,我有下一个json响应: 正如你所见,我有一个资源对象,里面有许多不同的对象,但这些对象可能会根据输入的不同而有所不同。我创建了下一个pojo: 在我的输入Pojo中: 导入java。util。列表 我将资源添加为对象列表,但我可以看到它是一个对象,其中包含不同的对象。如何将这些不同的对象映射到Java中的对象?事实上,我需要计算我有多少资源,但我正在努力实现这一目标。谢谢!

  • 问题内容: 我们有一张有很多列的大桌子。移至MySQL Cluster后,由于以下原因无法创建表: 错误1118(42000):行大小太大。不包括BLOB在内的已使用表类型的最大行大小为14000。这包括存储开销,请查阅手册。您必须将某些列更改为TEXT或BLOB 举个例子: 这是用于存储配置参数的表。我在想,我们可以将一些列合并为一个列,并将其存储为JSON对象,然后将其转换为Java对象。 例

  • 假设我有一个Foo对象列表。Foo上有一个属性,我必须使用它从数据源中获取Bar对象。然后我必须将每个bar对象映射回我得到bar的原始Foo对象。 我的尝试如下: