当前位置: 首页 > 知识库问答 >
问题:

将参数传递给Spring数据Neo4J中@query中的cypher查询

东郭翰音
2023-03-14

我有一个用户域:1)字符串用户名,2)字符串密码,3)角色[]角色(角色是枚举)。

my UserRepository中的方法如下所示:

@Query("MERGE (n:User:_User { username: \"{0}.username\", password: \"{0}.password\", roles: \"{0}.roles\" }) RETURN n")
User registerUser(User user);

这将引发org.springframework.core.convert.ConversionFailedExcture,因为它无法将String转换为Roles,这是一个枚举。如果我摆脱了{0}周围的引号。角色,那么它会抛出这个:

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is org.neo4j.helpers.ThisShouldNotHappenError: Developer: Andres claims that: Need something with properties

如果User参数可以直接序列化到MERGE查询中,或者以任何方式解析此Roles[],这将是理想的。

有人能帮我吗?我使用的是SDN3.1。0和Neo4J 2.0。3.

更新1:理想情况下,做这样的事情会很棒:

@Query("MERGE (n:User:_User {0}) RETURN n")
User registerUser(User user);

共有2个答案

易弘阔
2023-03-14

这实际上对我有用。

传递参数引用名可以代替传递参数位置。

@Query("MERGE (n:User:_User { username: {name}, password: {password}, roles: {roles} }) RETURN n")
User registerUser(String name, String password, Collection<String> roles);
管景天
2023-03-14

我不确定这将如何得到支持。它必须将User转换成一个映射,用作参数,通常当你传入一个实体时,它会转换成该实体的内部node-id。

为什么不直接使用模板呢。保存(用户)

您可以尝试单独传入参数。

@Query("MERGE (n:User:_User { username: {0}, password: {1}, roles: {2} }) RETURN n")
User registerUser(String name, String password, Collection<String> roles);
 类似资料:
  • 有没有用Cypher编写递归查询的方法?我必须遍历从一组节点(带有标签)到另一组节点的所有路径。该图是定向的,并且有多个路径,如 递归查询必须概述此伪代码 这个问题的解决方案不一定是递归的。任何其他解决方案都将受到赞赏。 编辑:在查询开始之前,根据需要将设置为一些值。并且图中的所有其他节点(例如)都有它们的。 有多个定向路径,如。对于这些路径中的每个节点(m,n,o,..)-[*]->y-->x-

  • 包org.springframework.data.neo4j.annotation中的注释@Query提供了某些计数属性,如CountQuery、CountQueryName。 有人能解释一下这些的用法吗?更具体地说,我写了一个查询来获取关于一个主题的帖子。查询结果将被分页。下面的查询工作正常,并给我的结果。 现在我还需要结果的总数,我是否必须为此编写另一个查询,或者是否有一种方法可以容纳计数查

  • 问题内容: 我有一个由一列值组成的数据框,我想将其作为参数传递来执行以下sql查询: 因此,我尝试了许多其他事情: 传递数据帧值的正确方法是什么? 注意:我使用的是Microsoft SQL Server,因此查询格式需要与我一样。 问题答案: 这能满足您的需求吗? 然后,您应该能够查询而无需更多参数。

  • 问题内容: 我正在使用Go内置的http服务器,并拍拍来响应一些URL: 我需要向该处理函数传递一个额外的参数-一个接口。 如何向处理程序函数发送额外的参数? 问题答案: 通过使用闭包,您应该能够做您想做的事情。 更改为以下内容(未测试): 然后对

  • 我在解一个有很多常数的非线性方程 我创建了一个用于解决以下问题的函数: 然后我想做: 但是正在解包并向函数传递太多参数,因此我得到: TypeError:terminalV()正好接受2个参数(给定6个) 那么,我的问题是,我是否可以通过某种方式将元组传递给调用的函数?

  • 我试图找出是否有可能传递一个JSON对象RestAPI,或传递多个参数到该API?如何在Spring中读取这些参数?让我们假设url看起来像下面的例子: 例1<代码>http://localhost:8080/api/v1/mno/objectKey?id=1 传递下面url中的JSON对象是否有效? 例2<代码>http://localhost:8080/api/v1/mno/objectKey