У меня возникли проблемы с получением правильного URL-адреса для самообслуживания, используя пружинные данные с пружинными данными jpa.Spring data-rest некорректный ресурс href
Так у меня есть класс Student:
@Entity
@Table(name="student", schema="main")
public class Student {
@Id
private Long id;
...
...
@OneToOne
@JoinColumn(name = "id")
private StudentInformation studentInformation;
}
с соответствующим хранилище файлов
@RepositoryRestResource(collectionResourceRel = "students", path = "students")
public interface StudentRepository extends PagingAndSortingRepository<Student, Long> {
}
Существует также StudentInformation класс
@Entity
@Table(name="studentinformation", schema="main")
public class StudentInformation {
@Id
private Long id;
...
...
}
(другие свойства/геттеры/сеттеры опущено)
с соответствующим хранилищем
@RepositoryRestResource(collectionResourceRel = "studentinformation", path = "students/studentinformation")
public interface StudentInformationRepository extends CrudRepository<StudentInformation, Long> {
}
Студенческих дисплеями, как я бы ожидать, когда я искать один по его идентификатору,
{
"id": 1,
...
...
"_links": {
"self": {
"href": "http://localhost:8080/students/1"
},
"student": {
"href": "http://localhost:8080/students/1"
},
"studentinformation": {
"href": "http://localhost:8080/students/1/studentinformation"
}
}
}
кроме случаев, когда я по ссылке от студентов до studentInformation, studentInformation имеет неправильная связь.
{
"id": 1,
...
...
"_links": {
"self": {
"href": "http://localhost:8080/students/studentinformation/1"
},
"studentinformation": {
"href": "http://localhost:8080/students/studentinformation/1"
}
}
}
Как я могу получить эту ссылку, чтобы прочитать "HREF": "http://localhost:8080/students/1/studentinformation вместо "HREF":" http://localhost:8080/students/studentinformation/1 "
Благодаря
Спасибо за ответ. Итак, вы говорите, что нет способа укладывать ресурсы в собственный URL-адрес href? например, 'http: // localhost: 8080/RESOURCE/{id}/SUB_RESOURCE' using @RepositoryRestResource? Я должен был бы определить свои собственные контроллеры REST? Это кажется странным – user2254140
К сожалению, да, вы можете проверить это в ссылке, которую я предоставил, но не в репозиториях. Если бы вы нашли какой-либо способ сделать это - было бы хорошо знать. То, как это можно сделать, - это определить @RepositoryRestController с вашей пользовательской реализацией и связать его с вашим ресурсом. –
Если вы хотите пойти с реализацией репозиториев, вы можете сделать 'SUB_RESOURCE/{ID}? RESOURCE_ID = {RESOURCE_ID}' –