Spring Data Neo4j在一个NodeEntity中合并不同的类

问题描述 投票:0回答:1

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

@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存在,取决于最后保存的实体。合并似乎并不真正合并,而是取代了实体属性。

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

java neo4j spring-data-neo4j
1个回答
1
投票

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

@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本身并没有对实体合并使用这样的查询。

© www.soinside.com 2019 - 2024. All rights reserved.