Мой вопрос более актуален с точки зрения разработки API REST.
Давайте иметь два объекта с отношением один-ко-многим:
@Entity
public class Company {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String name;
@OneToMany(mappedBy = "company", cascade = CascadeType.ALL)
private Set<Product> products;
}
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String name;
@ManyToOne
@JoinColumn(name = "company_id", nullable = false)
private Company company;
}
Возникает вопрос, как обновитьсвязанные записи (для связанных объектов компании) при отправке запроса JSON методу PATCH и какой должен быть правильный ответ.
Ниже я приведу возможные комбинации: (где поле «productIds» - преобразовано всоответствующие объекты продуктов с указанными идентификаторами)
JSON-запрос:
{"productIds": [1, 2, 3]}
Ответ:
1.1.Вариант 1
{
"productIds": [1, 2, 3]
}
1.2.Вариант 2
{
"products": [
{
"id": 1,
"name": "Comp1"
},
{
"id": 2,
"name": "Comp2"
},
{
"id": 3,
"name": "Comp3"
}
]
}
JSON-запрос:
{
"products": [{"id": 1,}, {"id": 2,}, {"id": 3,}]}
Ответ:
2.1.Вариант 1
{
"products": [
{
"id": 1,
},
{
"id": 2,
},
{
"id": 3,
}
]
}
2.2.Вариант 2
{
"products": [
{
"id": 1,
"name": "Comp1"
},
{
"id": 2,
"name": "Comp2"
},
{
"id": 3,
"name": "Comp3"
}
]
}
JSON-запрос:
{
"products": [{"id": 1, "name": "Comp1"}, {"id": 2, "name": "Comp2"}, {"id": 3, "name": "Comp3"}]}
Ответ:
3.1.Вариант 1
{
"products": [
{
"id": 1,
"name": "Comp1"
},
{
"id": 2,
"name": "Comp2"
},
{
"id": 3,
"name": "Comp3"
}
]
}
Мой вопрос: какое наиболее распространенное использование структуры json для обновления ссылок и ответов?
То есть вы можете поделиться передовым опытом, как вы выполняете обновления зависимостейи соответствующие ответы в ваших проектах.