java - Spring Data Neo4j 将不同的类合并到一个 NodeEntity 中

标签 java neo4j spring-data-neo4j

我目前正在使用 spring-data-neo4j(当前版本)开发一个项目,并且在尝试将两个类及其属性合并到一个 NodeEntity 中时遇到问题。 这是我的两个类(class):

@NodeEntity(label = "entity")
public class Ent1 {
    @Id
    @Index(unique = true)
    private Integer id;

    private Integer data1;
}

@NodeEntity(label = "entity")
public class Ent2 {
    @Id
    @Index(unique = true)
    private Integer id;

    private Integer data2;
}

通过定义用 @Index 注释的 id 属性,SDN 正在执行合并,而不是插入具有相同索引的多个节点。

我想要实现的是,如果我保存 Ent1 的一个实例,然后保存另一个具有与 Ent1 实体相同 id 的 Ent2 实例,则两个数据属性都应该出现在结果节点中。他们应该合并。

事实上,data1 或 data2 都存在,具体取决于最后保存的实体。合并似乎并没有真正合并,而是替换了实体属性。

有人有合并所有属性字段而不是替换/删除它们的解决方案吗?

最佳答案

我刚刚通过自定义密码查询解决了我的问题。如果有人也面临这样的问题,这里是上面问题抽象的解决方案。

@Query("MERGE (e:entity{id:{ent1}.id}) SET e.data1 = {ent1}.data1"
void saveEnt1(@Param("ent1") Ent1 ent1);

@Query("MERGE (e:entity{id:{ent2}.id}) SET e.data2 = {ent2}.data2"
void saveEnt2(@Param("ent2") Ent2 ent2);

遗憾的是,SDN 本身并不使用此类查询来进行实体合并。

关于java - Spring Data Neo4j 将不同的类合并到一个 NodeEntity 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52304250/

相关文章:

java - 如何在 URL 连接字符串中定义用户名和密码?

java - REST API 或 Java API 之间的选择

Android 应用程序中的 java.lang.NoSuchMethodError

java - 有没有办法在 Spring Data Neo4j 4 中拥有可嵌入类

java - CRUDRepository 的保存方法很慢?

java - 如何为电平表条设置动画?

java - Google Drive API v3 - 在 Java 中的文件夹内创建文件夹

neo4j - 如何根据关系属性查找路径?

多线程中的 neo4j Session.clear

java - PDFBox一半可用