spring data neo4j -是否有一种方法来映射一个对象图与@Query



我正试图将我的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);

最新更新