Я пытаюсь вставить список телефонов безуспешно.
Мой клиентский домен класса
@Entity
public class Client {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integir id;
private String name;
@JsonManagedReference
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(****)
private List<Phone> phones = new ArrayList<>();
**gets and sets**
public Client (String name){
this.name = name;
}
}
Мой домен Класс телефона
@Entity
public class Phone {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integir id;
private String number;
@JsonBackReference
@ManyToMany(mappedBy = "phones")
private List<Client> clients = ArrayList<>();
**gets and sets**
public Phone(String number) {
this.number = number;
}
}
У меня есть DTO ClientDTO
public class ClientDTO {
private String name;
private String number;
private List<Phone> numbers = ArryList<>();
**gets and sets**
}
Мой сервис ClientService имеет такой метод:
public Client fromDTO (ClientDTO clientDTO) {
Client c = new Client(clientDTO.getName());
for(Phone p: clientDTO.getNumbers()) {
p.setNumber(x.getNumber);
p.getClients().addALL(Arrys.asList(c));
c.getPhones().addAll(Arrys.asList(p));
}
}
Если я попытаюсь сделать это в Почтальоне:
{
"name" : "Teste",
"numbers":
[
{ "number" : "xxxxxx"},
{ "number" : "yyyyyyy"}
]
}
Показывает ошибку 415: неподдерживаемый тип носителя
Если я изменю свой ClientDTO на:
public class ClientDTO {
private String name;
private String number;
**gets and sets**
}
И мой метод в ClientService для:
public Client fromDTO (ClientDTO clientDTO) {
Client c = new Client(clientDTO.getName());
Phone p = new Phone(clientDTO.getPhone());
p.getClients().addAll(Arrys.asList(c));
c.getPhones().addAll(Arrays.asList(p));
}
И в моем почтальоне я отправляю это:
{
"name" : "Teste",
"number": "xxxxx"
}
Работает нормально.
Что я делаю не так?