@Entity
public class Product {
//..
private String name;
@OneToMany(mappedBy = "product", orphanRemoval = true)
private Set<File> files;
//..
}
@Entity
public class File {
//..
@ManyToOne
@JoinColumn(name = "product_id", nullable = true)
Product product;
//..
}
Я могу создать ассоциацию только с одной стороны, поэтому
POST /files/{id}
{
"product" : "http://localhost:8080/api/products/1"
}
работает, но
POST /products/{id}
{
"files" : [
"http://localhost:8080/api/files/1"
]
}
не работает. POST не возвращает никакой ошибки, но связь не выполняется, и база данных не обновляет внешний ключ.
Согласно этому вопросу Разместите объект с Spring Data REST, который имеет отношения это должно работать, но это не так.
РЕДАКТИРОВАТЬ: Добавлена дополнительная страница примера из https://www.baeldung.com/spring-data-rest-relationships
Даже на этой странице примера вы можете видеть, что ассоциация может быть когда-либо сделана только из "многих " сторона. В этом примере он установил связь между библиотеками <-> Книги один-ко-многим, и единственное, что вы можете сделать, это установить следующее:
curl -i -X PUT -H "Content-Type:text/uri-list"
-d "http://localhost:8080/libraries/1" http://localhost:8080/books/1/library
Вы не можете POST к http://localhost: 8080 / библиотеки / 1