Because the rest (json) output does not show the object list

0

I'm doing a little program to practice spring boot

I have these two entities

    package com.sistema.escuela.models;

    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;

    import javax.persistence.*;
    @Entity
    @Table(name="familiares")
    public class Familiar implements Serializable {


      @Id
      @GeneratedValue(strategy = GenerationType.IDENTITY)
      private Long id;
      @Column
      private String nombre;
      @Column
      private String apellido;
      @Column
      private String celular;
      @Column(name="telefono_alterno")
      private String telefonoAlterno;
      @Column
      private String domicilio;
      @Column
      private String localidad;
      @Column(name="fecha_nacimiento")
      @Temporal(TemporalType.DATE)
      private Date fechaNacimiento;



        @ManyToMany(fetch = FetchType.EAGER, mappedBy = "familiares")
        private List<Alumno> alumnos=  new ArrayList<Alumno>();

        public Familiar() {
            super();
        }


        public Long getId() {
            return id;
        }
        public void setId(Long id) {
            this.id = 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;
        }
        public String getCelular() {
            return celular;
        }
        public void setCelular(String celular) {
            this.celular = celular;
        }
        public String getTelefonoAlterno() {
            return telefonoAlterno;
        }
        public void setTelefonoAlterno(String telefonoAlterno) {
            this.telefonoAlterno = telefonoAlterno;
        }
        public String getDomicilio() {
            return domicilio;
        }
        public void setDomicilio(String domicilio) {
            this.domicilio = domicilio;
        }
        public String getLocalidad() {
            return localidad;
        }
        public void setLocalidad(String localidad) {
            this.localidad = localidad;
        }
        public Date getFechaNacimiento() {
            return fechaNacimiento;
        }
        public void setFechaNacimiento(Date fechaNacimiento) {
          this.fechaNacimiento = fechaNacimiento;
        }


       /**
       * 
       */
      private static final long serialVersionUID = 1L;

    }

and this class:

package com.sistema.escuela.models;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.*;

@Entity
@Table(name="alumnos")
public class Alumno implements Serializable {

    @Id
    @GeneratedValue(strategy =GenerationType.IDENTITY)
    private Long legajo;
    @Column
    private String nombre;
    @Column
    private String apellido;
    @Column(name="fecha_nacimiento")
    @Temporal(TemporalType.DATE)
    private Date fechaNacimiento;
    @Column(name="lugar_nacimiento")
    private String lugarNacimiento;
    @Column
    private String domicilio;
    @Column
    private String localidad;
    @Column(name="telefono_emergencia")
    private String telefonoEmergencia;
    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(name = "alumno_familiar", joinColumns = { 
            @JoinColumn(name = "alumno_legajo", nullable = false, 
            updatable = false) }, 
            inverseJoinColumns = { @JoinColumn(name = "familiar_id", 
                    nullable = false, updatable = false) })
    private List<Familiar> familiares =new ArrayList<Familiar>();;

    public Alumno() {

    }

    public Long getLegajo() {
        return legajo;
    }

    public void setLegajo(Long legajo) {
        this.legajo = legajo;
    }

    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;
    }

    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public String getLugarNacimiento() {
        return lugarNacimiento;
    }

    public void setLugarNacimiento(String lugarNacimiento) {
        this.lugarNacimiento = lugarNacimiento;
    }

    public String getDomicilio() {
        return domicilio;
    }

    public void setDomicilio(String domicilio) {
        this.domicilio = domicilio;
    }

    public String getLocalidad() {
        return localidad;
    }

    public void setLocalidad(String localidad) {
        this.localidad = localidad;
    }

    public String getTelefonoEmergencia() {
        return telefonoEmergencia;
    }

    public void setTelefonoEmergencia(String telefonoEmergencia) {
        this.telefonoEmergencia = telefonoEmergencia;
    }

    public List<Familiar> getFamiliares() {
        return familiares;
    }

    public void setFamiliares(List<Familiar> familiares) {
        this.familiares = familiares;
    }

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
}

As you can see I have a relationship of many to many.

the question is that the exit to this:

    @GetMapping("/familiares")
    public List<Familiar> getFamiliares()
    {
      List<Familiar> lista =service.findAll();
      return lista;
    }

is this:

  [
    {
        "id": 1,
        "nombre": "nombre1",
        "apellido": "apellido1",
        "celular": "1111111",
        "telefonoAlterno": "11111",
        "domicilio": "avellaneda",
        "localidad": "avellaneda",
        "fechaNacimiento": "2018-08-01T03:00:00.000+0000"
    },
    {
        "id": 2,
        "nombre": "nombre2",
        "apellido": "apellido2",
        "celular": "1111111",
        "telefonoAlterno": "11111",
        "domicilio": "avellaneda",
        "localidad": "avellaneda",
        "fechaNacimiento": "2018-08-01T03:00:00.000+0000"
    },
    {
        "id": 3,
        "nombre": "nombre3",
        "apellido": "apellido3",
        "celular": "1111111",
        "telefonoAlterno": "11111",
        "domicilio": "avellaneda",
        "localidad": "avellaneda",
        "fechaNacimiento": "2018-08-01T03:00:00.000+0000"
    },
    {
        "id": 4,
        "nombre": "nombre4",
        "apellido": "apellido4",
        "celular": "1111111",
        "telefonoAlterno": "11111",
        "domicilio": "avellaneda",
        "localidad": "avellaneda",
        "fechaNacimiento": "2018-08-01T03:00:00.000+0000"
    },
    {
        "id": 5,
        "nombre": "nombre5",
        "apellido": "apellido5",
        "celular": "1111111",
        "telefonoAlterno": "11111",
        "domicilio": "avellaneda",
        "localidad": "avellaneda",
        "fechaNacimiento": "2018-08-01T03:00:00.000+0000"
    }
  ]

I do not understand why it does not show in the json the list of students of the relative because debugging I detect if it brings them (and of course they exist in the base)

    
asked by pokez 26.10.2018 в 02:06
source

1 answer

0

Add the annotation @JsonIgnore to the instance variable declared in the Student entity and put LAZY in the instance variable declared in the Family entity.

@JsonIgnore
private List<Familiar> familiares =new ArrayList<Familiar>();
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "familiares")
private List<Alumno> alumnos=  new ArrayList<Alumno>();
    
answered by 30.10.2018 в 04:35