Spring-data-rest "Failed to convert" 实体的有效 hateoas URI

Spring-data-rest "Failed to convert" valid hateoas URI to Entity

我们正在使用 spring-data-rest 2.6.8 和 spring-boot 1.5.8,这太棒了!尽管如此,我们还是发现了一些奇怪的行为。

当我们对 /rest/students/search/findByTeacher?teacher=/rest/teachers/1 执行 GET 操作时,一切运行顺利。 SDR 将教师 URI 转换为教师实体,我们得到学生列表。

当我们提供不同的 URI(解析为同一对象)时,系统无法进行转换:/rest/students/search/findByTeacher?teacher=/rest/class/2/teacher

目前我们分两步进行。首先我们获取 /rest/class/2/teacher,然后我们使用 _links.self.href (/rest/teachers/1) 进行搜索。

有没有办法配置 SDR 来避免这个两步过程?

我认为这是不可能的。 Spring 解析 link 时的 Data Rest 工作方式基本上是获取 url,从开头删除 baseUri,然后它尝试匹配 [=19= 的下一部分] 到存储库 {teachers},然后使用 findOne 方法查询存储库。在这种情况下,url /rest/teachers/1 只是资源的标识符(没有 hateoas 就像 teacherID=1)

查询 /rest/class/2/teacher 的问题是您不知道它将解析什么 - 它可能是单个元素,它可能是一个列表,它可能是一个 null 等等,因为这不是资源的标识符,但 link 是另一个资源的标识符。