我目前正在使用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,具体取决于最后保存哪个实体。合并似乎并没有真正合并,而是替换了实体属性。
有人可以合并所有属性字段而不是替换/删除它们吗?
答案 0 :(得分: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本身并不将这种查询用于实体合并。