Сохранение связанных сущностей данных пружины отдыха 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), и он хорошо работает для меня.

Другие вопросы по тегам