Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将复杂参数传递到spring-date-rest的方法&x27;s法_Spring_Rest_Spring Data_Spring Data Jpa_Spring Data Rest - Fatal编程技术网

将复杂参数传递到spring-date-rest的方法&x27;s法

将复杂参数传递到spring-date-rest的方法&x27;s法,spring,rest,spring-data,spring-data-jpa,spring-data-rest,Spring,Rest,Spring Data,Spring Data Jpa,Spring Data Rest,我正在尝试查找有关以下问题的任何信息: 我有一个JPA存储库,它通过Spring Data REST项目向REST服务公开: Page<Business> findByUser(@Param("user") User user, Pageable pageable); Page findByUser(@Param(“用户”)用户,可分页; 其中,用户参数是实体 现在,当我尝试从客户机(使用RestTemplate或Traverson)调用此REST方法时,我不明白应该如何传递此参

我正在尝试查找有关以下问题的任何信息: 我有一个JPA存储库,它通过Spring Data REST项目向REST服务公开:

Page<Business> findByUser(@Param("user") User user, Pageable pageable);
Page findByUser(@Param(“用户”)用户,可分页;
其中,
用户
参数是实体

现在,当我尝试从客户机(使用RestTemplate或Traverson)调用此REST方法时,我不明白应该如何传递此参数

是否可以在不制作自定义控制器的情况下实现它


提前谢谢

我假设
用户
是另一个Spring数据REST管理实体?如果是这样的话,您将一个URI传递给查询方法资源,该URI标识您想要交给该方法的用户

Traverson traverson = new Traverson(…);
traverson.follow("businesses", "search", "findByUser")
  .withTemplateParameters(Collections.singletonMap("user", "…/users/4711")).…

我终于明白了。看看春天的吉拉

请求的方式取决于您的SpringDataREST版本。如果您有版本2.4+,则必须使用URI。如果您的版本较旧,则必须使用主键


因此,如果您有较旧版本的SDR,则可能需要公开主键。可以帮助您进行管理。

我使用您建议的rest调用格式后出现的问题是:
无法将值“…/users/4”的java.lang.String类型转换为java.lang.Long类型;嵌套异常是java.lang.NumberFormatException:对于输入字符串:“…/users/4”
相同的问题-我有相同的问题(不是使用Traverson,而是直接命中我的服务器API)。所以我做了一点调试,并且观察了org.springframework.data.repository.support.DomainClassConverter中的内容。在内部,
info.metadata.idType
Long
(这是正常的,my@Id是Long),而source是URI字符串。所以它尝试调用一个字符串->长转换器。这引发了一个例外。我认为它不打算到达这里,但我不明白在路上出了什么问题……因此,如果我将DB id而不是URI放在这里,它确实可以工作。但是我认为这不是为了操纵它们。顺便说一句,我在org.springframework.data.rest.core.UriToEntityConverter中设置了一个断点,但它从未命中。那么这个转换器的注册可能有问题吗?