Spring-data-rest“无法将有效的hateoas URI转换为Entity”

时间:2017-11-24 20:35:12

标签: spring-boot spring-data-rest spring-hateoas

我们正在使用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以避免这个两步过程?

1 个答案:

答案 0 :(得分:1)

我认为不可能。解析链接时的Spring Data Rest工作方式基本上是抓取url,从头开始删除baseUri,然后尝试将URL的下一部分与repository {teachers}匹配,然后使用findOne方法查询存储库。在这种情况下,网址/rest/teachers/1只是资源的标识符(没有hateoas就像老师ID = 1)

查询/rest/class/2/teacher的问题在于你不知道它将被解析 - 它可能是单个元素,它可能是一个列表,它可能是一个null等因为这不是一个标识符到资源,但链接到另一个。