Spring Data Neo4J 4.0.0:属性 调用查找的正确顺序是什么?
Spring Data Neo4J 4.0.0 : What is the right sequence of calls to lookup by property?
我正在 Neo4J 4.0.0.M1 中的一个节点上进行简单的驼峰式大小写查找:
例如
UserRepository.findByUserId(String userId);
我可以在我的日志文件中看到生成了正确的 Cypher 查询:
match (u:User) where u.userId = {0} return u
我可以在 Neo4J 浏览器中 运行 这段代码,其中一个节点的预期结果是 returned。我还可以看到生成了正确的 JSON
例如
21:53:39.819 [tomcat-http--37] INFO o.n.o.session.request.DefaultRequest - POST http://localhost:7474/db/data/transaction/commit, request: {"statements":[{"statement":"match (u:User) where u.userId = {0} return u","parameters":{"0":"145"},"resultDataContents":["graph"]}]}
我可以从 PostMaster 运行 获得一个节点被 returned 的预期结果。
但是,运行通过代码在 GraphRepository
return 中使用命名查询来实现这一点,我相信目前在 Neo4JSession
中的每个节点。
这是 UserRepository:
@Repository
public interface UserNodeRepository extends GraphRepository<User> {
@Query ("match (u:User) where u.userId = {0} return u")
public List<User> findByUserId(String userId);
}
运行 此代码 return 是我在 Neo4J 中创建的所有用户。
请注意,我已将 return 类型更改为列表,因为一个节点被 returned 的预期行为没有发生,而且我遇到了映射异常。另请注意,这里有一个命名查询,因为我不确定问题可能出在 Camel Case 查找还是命名查询上。
这在 Neo4J 3 中也能正常工作。3.x
此外,我已将问题追溯到 Neo4JSession.query()
,其中正在调用 Neo4JSession.query,后者会执行以下操作:
return getResponseHandler().loadAll(type, response);
这是 return MappingContext 中具有给定 class 类型的所有节点。我相信,它应该调用 Neo4JSession.loadByProperty
在节点上进行查找。
是否有我遗漏的设置?
@Query
返回不需要的结果已修复 post M1 版本。您可以使用快照构建再试一次吗?
http://repo.spring.io/libs-snapshot/org/springframework/data/spring-data-neo4j/4.0.0.BUILD-SNAPSHOT/
我正在 Neo4J 4.0.0.M1 中的一个节点上进行简单的驼峰式大小写查找:
例如
UserRepository.findByUserId(String userId);
我可以在我的日志文件中看到生成了正确的 Cypher 查询:
match (u:User) where u.userId = {0} return u
我可以在 Neo4J 浏览器中 运行 这段代码,其中一个节点的预期结果是 returned。我还可以看到生成了正确的 JSON
例如
21:53:39.819 [tomcat-http--37] INFO o.n.o.session.request.DefaultRequest - POST http://localhost:7474/db/data/transaction/commit, request: {"statements":[{"statement":"match (u:User) where u.userId = {0} return u","parameters":{"0":"145"},"resultDataContents":["graph"]}]}
我可以从 PostMaster 运行 获得一个节点被 returned 的预期结果。
但是,运行通过代码在 GraphRepository
return 中使用命名查询来实现这一点,我相信目前在 Neo4JSession
中的每个节点。
这是 UserRepository:
@Repository
public interface UserNodeRepository extends GraphRepository<User> {
@Query ("match (u:User) where u.userId = {0} return u")
public List<User> findByUserId(String userId);
}
运行 此代码 return 是我在 Neo4J 中创建的所有用户。
请注意,我已将 return 类型更改为列表,因为一个节点被 returned 的预期行为没有发生,而且我遇到了映射异常。另请注意,这里有一个命名查询,因为我不确定问题可能出在 Camel Case 查找还是命名查询上。
这在 Neo4J 3 中也能正常工作。3.x
此外,我已将问题追溯到 Neo4JSession.query()
,其中正在调用 Neo4JSession.query,后者会执行以下操作:
return getResponseHandler().loadAll(type, response);
这是 return MappingContext 中具有给定 class 类型的所有节点。我相信,它应该调用 Neo4JSession.loadByProperty
在节点上进行查找。
是否有我遗漏的设置?
@Query
返回不需要的结果已修复 post M1 版本。您可以使用快照构建再试一次吗?
http://repo.spring.io/libs-snapshot/org/springframework/data/spring-data-neo4j/4.0.0.BUILD-SNAPSHOT/