在SDN4中,我希望保留@RelationshipEntity
不属于@NodeEntity
的属性。
例如:
@NodeEntity
public class User{
Long id;
}
@RelationshipEntity(type="FOLLOWS")
public class Follows{
@GraphId private Long relationshipId;
@StartNode private User follower;
@EndNode private User followee;
@Property private Date from;
public Follows(){}
public Follows(User u1, User u2){
this.follower = u1;
this.followee = u2;
}
}
@Repository
interface FollowsRepository extends GraphRepository<Follows>{}
然后像这样坚持Follows
@Relationship
...
followsRepository.save(new Follows(user1, user2));
...
但是这样做时,关系就不会持久!!
可悲如接受的答案中所说,这还不能(尚未)完成(SDN 4.0.0.RELEASE)
可以在@RelationshipEntities
中使用@Query
保留GraphRepositories
。
@Query("Match (a:User), (b:User) WHERE id(a) = {0}
AND id(b) = {1} CREATE (a)-[r:FOLLOWS {date:{2}}]->(b) RETURN r ")
这也可以通过将Follows
视为@NodeEntity
来完成,这可能不是最有效的事情但不会影响任何{{1}域名,服务层 AND 你在加载和持久化实体时不必弄乱深度因素
@NodeEntities
答案 0 :(得分:3)
目前,当未从参与节点实体引用关系实体时,您无法直接保留关系实体。 您必须保存起始节点并确保它具有对关系实体的引用。
关于关系实体如何持久化会有一些增强,但在下一版本中不会。