![](/img/trans.png)
[英]Spring Data Neo4j (SDN): Nested objects not populated by cypher
[英]Relationship not saved in SDN 6 (Spring data neo4j)
您好,在保存與 NEO4J 和 Spring 的關系時遇到問題,當我不使用帶有 @RelationProperties 的@RelationProperties
時,我可以保存關系,但是每當我想使用 class 時,甚至都不會創建關系。
我在 docker 容器中使用 Neo4j 4.3.7-社區版 在我的 pom.xml 中我有
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
<version>6.1.5</version>
</dependency>
我想做這樣的事情
我有這段代碼:
起始節點
...
@Relationship(type = "VISITS",direction = Relationship.Direction.OUTGOING)
public Set<Visits> visits;
public void visitPOI(Visits visit) {
if(visits == null) {
visits = new HashSet<>();
}
visits.add(visit);
}
...
我的關系
@RelationshipProperties
public class Visits {
@Id @GeneratedValue
private long id;
@Property private String description;
@TargetNode private PointOfInterest poi;
public Visits(String description, PointOfInterest p){
this.description = description;
this.poi = p;
}
...
和目標節點
...
@Node
public class PointOfInterest {
@Id @GeneratedValue(generatorClass = UUIDStringGenerator.class)
private String id;
@Property private String name;
@Property private double lat;
@Property private double lng;
public PointOfInterest() { }
//getters and setters
...
這在服務中
...
public void saveRelation(String username, Visits v ){
User u = userRepository.findByUserName(username);
Optional<PointOfInterest> poi = pointOfInterestRepository.findById(v.getPoi().getId());
v.setPoi(poi.get());
u.visitPOI(v);
userRepository.save(u);
}
...
和我發布的 JSON
{
"description":"Nice trip",
"poi":{
"id":"Uster"
}
}
在@RelationshipId
的 id 字段上使用@RelationshipProperties
如下
@RelationshipProperties
public class Visits {
@RelationshipId
private long id;
@Property private String description;
.....
}
我在使用@RelationshipProperty
注釋 class 持久化關系屬性時遇到了同樣的問題。最后,我發現問題是由於 long 和 Long 之間的隱式轉換引起的。 更改@RelationshipId private long id;
到@RelationshipId private Long id;
在@RelationshipProperty
注釋為 class 就可以了。 這似乎是 SDN 中的一個錯誤,它應該報告錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.