Spring Data Neo4j中byId的派生查询不正确

时间:2015-08-25 17:14:41

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

我有两个实体:User和Connection,以及两个适当的存储库。两个实体都有@GraphId id字段。连接实体具有User user字段。

在ConnectionRepository接口中,我添加了以下方法:

List<Connection> findByUserId(long userId)

但它不起作用。它生成不正确的密码查询。我认为这是不正确的,因为它包含这样的条款:

WHERE user.id = 15

无效,因为id不是属性。必须是:

WHERE id(user) = 15

这是一个错误吗?无论如何,我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:3)

派生的查询会转换为id上定义的user的属性Connection。节点实体很可能也包含用户管理的id属性,并且假设id始终是节点ID是错误的。

在这种情况下,您可能希望改为使用@Query

@Query("MATCH (user:label) WHERE ID(user)={0} return user")
List<Connection> findByUserId(long userId)