Как обновить элементы двунаправленного элемента JPA и исправить ответ - PullRequest
0 голосов
/ 19 февраля 2019

Мой вопрос более актуален с точки зрения разработки 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» - преобразовано всоответствующие объекты продуктов с указанными идентификаторами)

  1. 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 для обновления ссылок и ответов?

То есть вы можете поделиться передовым опытом, как вы выполняете обновления зависимостейи соответствующие ответы в ваших проектах.

...