Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

JSON retornando dados desnecessários

Pessoal, tenho as seguintes classes:

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "company")
public class CompanyModel {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Type(type = "uuid-char")
    private UUID id;


    @Column(nullable = false)
    private String name;

    @Column(nullable = false, unique = true)
    private String email;

    @Column(nullable = false, unique = true)
    private String cnpj;

    @Column(nullable = false, unique = true)
    private String cellphone;

    @Column(nullable = false, unique = true)
    private String login;

    @Column(nullable = false, unique = true)
    private String password;

    @Column(nullable = false)
    private String postalCode;

    @Column(nullable = false)
    private String state;

    @Column(nullable = false)
    private String city;

    @Column(nullable = false)
    private String district;

    @Column(nullable = false)
    private String street;

    @Column(nullable = false)
    private String number;

    @Column
    private String referencePoint;

    @JsonIgnoreProperties("company")
    @OneToMany(cascade = {CascadeType.REFRESH,CascadeType.REMOVE}, fetch = FetchType.LAZY, mappedBy="company")
    private List<ProductModel> products;

e

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "products")
public class ProductModel {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Type(type = "uuid-char")
    private UUID id;

    @Column(nullable = false)
    private String productName;

    @Column(nullable = false)
    private Double price;

    @Column(nullable = false, length = 400)
    private String description;

    @Column(nullable = false)
    private boolean active;
    @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
    @JoinColumn(name = "company_id", referencedColumnName = "id")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private CompanyModel company;



}

Meu problema é quando cadastro um produto em uma empresa, quando listo essa empresa o json retornado me devolve dados desnecessários. Exemplo: Exemplo do retornoPercebam que ele me retorna novamente o nome da empresa etc e mais embaixo ainda retorna novamente os produtos de tal empresa, como que faço que ele me retorne APENAS UMA VEZ a empresa e seus produtos.

1 resposta
solução!

Tente adicionar a anotação @JsonIgnore na entidade produto:

public class ProductModel {
    (...)
    @Column(nullable = false)
    private boolean active;
    @JsonIgnore
    @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
    @JoinColumn(name = "company_id", referencedColumnName = "id")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private CompanyModel company;
    (...)
}