Json和数组序列化-Java Spring引导

Json和数组序列化-Java Spring引导,java,json,hibernate,spring-boot,Java,Json,Hibernate,Spring Boot,我试图插入一个电话列表,但没有成功 我的域客户端类 @Entity public class Client { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integir id; private String name; @JsonManagedReference @ManyToMany(cascade = CascadeType.ALL) @JoinTable(****) private List<

我试图插入一个电话列表,但没有成功

我的域客户端类

@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;
   }
}
如果我尝试在《邮递员》中这样说:

{
 "name" : "Teste",
 "numbers": 
  [
   { "number" : "xxxxxx"},
   { "number" : "yyyyyyy"}  
  ]
}
显示错误415:不支持的媒体类型

如果我将我的客户更改为:

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" 
}
很好

我做错了什么?

将空(无参数)构造函数添加到客户端和电话实体类中

客户端实体类

@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 (){}
   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() {}
    public Phone(String number) {
      this.number = number;
    }  
}
@实体
公共类客户端{
@Id@GeneratedValue(策略=GenerationType.IDENTITY)
私有整数id;
私有字符串名称;
@JsonManagedReference
@多个(级联=级联类型.ALL)
@可接合(****)
私有列表电话=新的ArrayList();
**获取和设置**
公共客户端(){}
公共客户端(字符串名称){
this.name=名称;
}
}
电话实体类

@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 (){}
   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() {}
    public Phone(String number) {
      this.number = number;
    }  
}
@实体
公用电话{
@Id@GeneratedValue(策略=GenerationType.IDENTITY)
私有整数id;
私有字符串编号;
@JsonBackReference
@许多(mappedBy=“电话”)
private List clients=ArrayList();
**获取和设置**
公用电话(){}
公用电话(字符串号码){
这个数字=数字;
}  
}

如果对象没有可序列化的超类且没有参数构造函数,则无法序列化该对象。因为您在ClientDTO中使用了Phone实体类,并且它没有参数构造函数,所以序列化过程失败

我包含了默认构造函数,但错误仍然存在。因此,我在ClientDTO->List中添加了注释@JsonIgnore,错误结束。但不包括电话。现在呢?我做错了什么?
@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() {}
    public Phone(String number) {
      this.number = number;
    }  
}