PUT об ассоциации ManyToMany в Spring Data Rest - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь выяснить, как поставить PUT непосредственно на имеющуюся у меня ассоциацию ManyToMany.

Пример моих сущностей (имена изменены для дополнительной путаницы):

Первая сущность:

@Entity
public class First {
    @Id
    private Long id;

    private String name;

    @OneToMany(mappedBy = "first")
    private Set<Third> thirds = new HashSet<>();
}

Вторая сущность:

@Entity
public class Second {
    @Id
    private Long id;

    private String name;

    @OneToMany(mappedBy = "second")
    private Set<Third> thirds = new HashSet<>();
}

Третья сущность:

@Entity
public class Third {
    @Id
    private Long id;

    private String type;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "first_id")
    private First first;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "second_id")
    private Second second;
}

Теперь я хочу сделать что-то вроде этого:

PUT /first/1/thirds
{
    "second": "/second/1",
    "type": "TEST"
}

Но ничего не происходит. Можно ли PUT ассоциации таким образом, когда вы используете сущность в середине ManyToMany? Или я должен просто ПОСТАВИТЬ ассоциацию непосредственно в / третий?

1 Ответ

0 голосов
/ 12 марта 2020

сначала вы должны создать первый экземпляр, например:

curl -i -X POST -d "{\"name\":\"first\"}"
  -H "Content-Type:application/json" http://localhost:8080/firsts

, затем вам нужно создать третий экземпляр:

curl -i -X POST -H "Content-Type:application/json"
  -d '{\"type\":\"third\"}' http://localhost:8080/thirds

и, в конце концов, вы можете создать ассоциацию с PUT:

curl -i -X PUT -H "Content-Type:text/uri-list"
-d "http://localhost:8080/firsts/1" http://localhost:8080/thirds/1/first
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...