Сохранение связанных сущностей данных пружины отдыха HAL-JSON
У меня есть следующая проблема
У меня есть базовая конфигурация данных по весне (ничего особенного, ничего особенного).
Использование spring-data-rest-webmvc 2.0.0 RELEASE и spring-data-jpa 1.5.0 RELEASE
Класс А
@Entity
public class A {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id
private String name;
@ManyToMany
private List<B> b;
// getters setters
}
Класс б
@Entity
public class B {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id
private String nameb;
@ManyToMany(mappedBy = "b")
private List<A> a;
// getters setters
}
Репозиторий А
@Repository
@RestResource(rel = "a", path = "a")
public interface ARepository extends PagingAndSortingRepository<A, Integer> {
}
Хранилище Б
@Repository
@RestResource(rel = "b", path = "b")
public interface BRepository extends PagingAndSortingRepository<B, Integer> {
}
Когда я сохраняю сущность работает нормально, но я не знаю, как сохранить отношения
например, сохранить "А" внутри "В", используя http
Это последнее, что я пытаюсь из этого ответа /questions/19418928/rest-uri-dannyih-spring-protiv-identifikatora-obekta/19418956#19418956
POST http://localhost:8080/api/a
{
"name": "Name of A",
"b": {
"rel": "b",
"href": "http://localhost:8080/api/b/1"
}
}
Я получаю http-код 201, но не сохраняю сущность.
Кто-то уже пробовал это?
1 ответ
Попробуйте просто использовать URL.
POST http://localhost:8080/api/a
Content-Type: application/json
{
"name" : "Name of A",
"b": "http://localhost:8080/api/b/1"
}
или, в вашем случае, это, вероятно,
"b" : ["http://localhost:8080/api/b/1"]
потому что Ab является списком и, следовательно, вы отправляете массив. Не проверял это, хотя.
Это должно быть правильным способом начиная с Spring 2.0 (см. Spring Data Rest 2.0.0.RELEASE ломает код, работавший ранее с RC1), и он хорошо работает для меня.