我有一个对象,该对象通过json POST请求获取两个参数以在数据库中创建一个新条目,并且出现此错误:



这是对象:

@Entity
public class Persona {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;
    private String nombre;
    private String apellido;



    public Persona(String nombre, String apellido) {

        this.nombre = nombre;
        this.apellido = apellido;
    }
    public Integer getId() {
        return id;
    }

    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public String getApellido() {
        return apellido;
    }
    public void setApellido(String apellido) {
        this.apellido = apellido;
    }


}

这是 Controller 方法:
@PostMapping(path="/persona")
public @ResponseBody String addPersona(@RequestBody Persona p) {
    personaRepository.save(p);
    return "success";

}

最佳答案

您将需要一个空的构造函数,以允许Jackson正确执行其反序列化操作。

而且,尽管如此,将实体模型用作数据传输对象并不是一个好主意。我建议创建一个PersonaDto,其中将包含您为对象构造所需的所有字段,并使用Spring converter将其转换为Persona对象。

这样一来,您将变得更加灵活,并且不会将您的对象绑定(bind)到实际的实体模型。

09-03 20:13