【问题标题】:ID conversion changes from Spring Data Rest Fowler to GoslingID 转换从 Spring Data Rest Fowler 更改为 Gosling
【发布时间】:2016-01-19 14:18:01
【问题描述】:

我有一项使用 Spring Boot 1.2.5 和 Spring Data Releastrain Fowler-SR2 运行良好的服务。升级到 Spring Data Releastetrain Gosling 时,我的 API 中断,我无法弄清楚原因。

如果我的Repository 界面上有以下内容:

public Page<Person> findByPerson(@Param("person")Person person, Pageable pagable)

我调用端点:

/service/people/search/findByPerson?person=100

SDR 会正确地将 100 的 id 转换为 Person 对象(使用数字作为 PK id)并返回该对象。如果我将其称为:

/service/people/search/findByPerson?person=/service/people/100

升级到 Gosling releasetrain 时,这一切都会中断。现在只有第二个版本有效,任何使用数字 id 进行调用的尝试都会失败,并返回 org.springframework.data.repository.support.QueryMethodParameterConversionException 异常。

我在 Gosling 发布信息中找不到有关此更改的任何参考,但我确信此更改与从 Fowler 到 Gosling 的转换有关。

任何人都知道这是为什么,以及如何恢复功能。这个 API 用在很多地方,必须更新所有客户端是一项艰巨的任务。我想利用 Gosling 发行版中的安全修复和其他改进,而不是卡在 Fowler 上,但如果我无法恢复此功能,我就无法这样做,至少在一段时间内允许其他客户端更新他们的调用方法.

【问题讨论】:

  • 这只是推动 SDR 更加 RESTful 的一部分吗?你在其他地方得到答案了吗?

标签: java spring-data spring-data-rest


【解决方案1】:

是的,我得到了答案,它是“旧的行为是一个错误,而 Gosling 现在发生的事情是它应该一直是这样工作的。您必须更改您的应用程序以匹配该行为”。

因此,我必须对我们的应用程序和客户端进行相当大的更改才能解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 2016-12-07
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多