我正试图将我的SDN3嵌入式配置迁移到服务器模式下使用带有Neo4j实例的SDN 3.3.0(然后通过REST API进行通信)。
当DB被嵌入时,对DB进行大量的小点击并不是什么大问题,因为Neo4j能够超级快速地处理这种查询。
然而,现在我运行我的Neo4j从我的应用程序分开(即。在服务器模式下,由于网络开销,不建议进行大量的小查询。
User user = userRespository.findOne(123);
user.fetch(user.getFriends());
user.fetch(user.getManager());
user.fetch(user.getAgency());
这将触发相当多的查询,特别是如果我想获得的不是单个用户,而是一个用户列表。
我可以使用@Query注释并获取用户和相关实体并将其映射到user对象吗?
我在想这样的事情:
@Query("MATCH (u:User)-[r:FRIEND]->(f) RETURN u,r,f"
是这样的事情可能与Spring Data Neo4j?Spring Data Neo4j 4有可能吗?
您可以使用@QueryResult指令为查询结果定义一个类,并让查询的方法返回该类的对象,即:
@QueryResult
public interface UserWithFriends {
@ResultColumn("u")
User getUser();
@ResultColumn("f")
List<User> friends();
}
@Query("MATCH (u:User)-[:FRIEND]->(f) WHERE u.name={name} RETURN u,f")
UserWithFriends getUserByName(@Param("name") String name);