gpt4 book ai didi

java - Spring Data Neo4j 未填充 RelationshipEntity

转载 作者:搜寻专家 更新时间:2023-11-01 03:24:27 24 4
gpt4 key购买 nike

我正在创建指向它们之间的实体和关系实体。我将 RelationshipEntity 放在一个实体中,然后保存该实体。这也会自动保存 RelationshipEntity。

我知道关系已保存,因为我可以单独检索实体和关系实体。但是,当我检索开始或结束实体时,其关系集为空。

我试过强制渴望获取但没有快乐。
谁能看出我在这里做错了什么?

我的实体...

@NodeEntity
public class Thing {

public Thing() {
super();
}

@GraphId
private Long nodeId;

private Long uuid; // unique across domains

@Fetch
@RelatedToVia(type="some default type", direction = Direction.BOTH)
Set<ThingRelationship> relationships = new HashSet<ThingRelationship>();

@Fetch
private Set<Property<?>> properties;

public ThingRelationship relatedTo(Thing thing, String relationshipType){
ThingRelationship thingRelationship = new ThingRelationship(this, thing, relationshipType);
relationships.add(thingRelationship);
return thingRelationship;
}

public Set<ThingRelationship> getRelationships() {
return relationships;
}

...
}

我的关系实体...

@RelationshipEntity
public class ThingRelationship {

public ThingRelationship() {
super();
}

//incremental neo4j set ID
@GraphId Long nodeId;

//Start and end nodes
@StartNode Thing startThing;
@EndNode Thing endThing;

//Relationship Type
@org.springframework.data.neo4j.annotation.RelationshipType
String relationship;

public ThingRelationship(Thing startThing, Thing endThing, String relationship) {
super();
this.startThing = startThing;
this.endThing = endThing;
this.relationship = relationship;
}

最后是我的测试....(最终断言失败)

    @Test 
@Rollback(false)
public void testAddRelationship(){


Thing thingA = new Thing();
template.save(thingA);
Thing retrievedThingA = template.findOne(thingA.getNodeId(), Thing.class); //returns a thing OK
assertNotNull(retrievedThingA);

Thing thingB = new Thing();
template.save(thingB);
Thing retrievedThingB = template.findOne(thingB.getNodeId(), Thing.class); //returns a thing OK
assertNotNull(retrievedThingB);

//Relationship
ThingRelationship thingRelationship = thingB.relatedTo(thingA, "REALLY_REALLY_LIKES");
template.save(thingRelationship);

ThingRelationship thingRelationshipRetrieved = template.findOne(thingRelationship.getNodeId(), ThingRelationship.class);
assertEquals(thingB.getNodeId(), thingRelationshipRetrieved.getStartThing().getNodeId());
assertEquals(thingA.getNodeId(), thingRelationshipRetrieved.getEndThing().getNodeId());

Thing retrievedThingFinal = template.findOne(thingB.getNodeId(), Thing.class);
template.fetch(retrievedThingFinal.relationships);
assertEquals(1, retrievedThingFinal.getRelationships().size()); //FAILS HERE

}

最终断言失败,显示“预期为 1 但发现为 0”:(由于我急切地获取,返回的实体是否应该不存在 RelationsipEntity?

最佳答案

问题出在下面这行

@RelatedToVia(type="some default type", direction = Direction.BOTH)
Set<ThingRelationship> relationships = new HashSet<ThingRelationship>();

将其更改为以下有效。

@RelatedToVia(type="REALLY_REALLY_LIKES", direction = Direction.BOTH)
Set<ThingRelationship> relationships = new HashSet<ThingRelationship>();

如果您使用的是动态关系,不确定为什么它不起作用。

关于java - Spring Data Neo4j 未填充 RelationshipEntity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18497971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com