多个/可选的EndNode Neo4j

时间:2016-06-15 11:23:13

标签: neo4j spring-data-neo4j-4 neo4j-ogm

当前情况:

用户可以拥有汽车和摩托车,因此用户可以拥有1种关系[:OWNS]:汽车和另一种关系:摩托车。用户也可能既没有也没有其中一个。

U->C & U->M
U->C 
U

当前关系实体:

@RelationshipEntity(type = "OWNS")                      
public class Owns {

@GraphId                                    
Long relationshipId;                            

private int price;

@StartNode                          
Car car;                                

@EndNode                                    
Motorcycle motor;
}

如何设置用户只拥有其中一个?因为我得到的错误是EndNode不能为null,这在这一点上是可以理解的。有没有办法让另一个endNode可选?

由于

1 个答案:

答案 0 :(得分:1)

也许是对@RelationshipEntity的误解? 关系实体只是两个节点之间属性的关系。

@StartNode                          
Car car;                                

@EndNode                                    
Motorcycle motor;

说汽车是一辆摩托车。

你想要的是拥有汽车或摩托车的用户,所以如果你有迈克尔建议的超类Vehicle,那么你将拥有以下内容:

@RelationshipEntity(type = "OWNS")                      
public class Owns {

@GraphId                                    
Long relationshipId;                            

private int price;

@StartNode                          
User user;                                

@EndNode                                    
Vehicle vehicle;
}

用户可以:

@Relationship(type="OWNS")
Set<Owns> vehiclesOwned;

并且此套装中可以包含零个或一个或多个车辆。