CategoryDTO
package com.eclodir.voucomprei.dto;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import com.eclodir.voucomprei.domain.Categoria;
public class CategoriaDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String descricao;
private String foto;
private List<ProdutoDTO> produtos = new ArrayList<>();
public CategoriaDTO() {}
public CategoriaDTO(Categoria obj) {
this.id = obj.getId();
this.descricao = obj.getDescricao();
this.foto = obj.getFoto();
this.produtos = obj.getProdutos().stream().map(x -> new ProdutoDTO(x)).collect(Collectors.toList());
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getFoto() {
return foto;
}
public void setFoto(String foto) {
this.foto = foto;
}
public List<ProdutoDTO> getProdutos() {
return produtos;
}
public void setProdutos(List<ProdutoDTO> produtos) {
this.produtos = produtos;
}
}
ProductDTO
package com.eclodir.voucomprei.dto;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import com.eclodir.voucomprei.domain.Categoria;
import com.eclodir.voucomprei.domain.Produto;
public class ProdutoDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String descricao;
private String foto;
private String fabricante;
private String unidade;
private List<String> categorias = new ArrayList<>(); // Esta lista recebe as descrições das categorias
public ProdutoDTO() {
}
public ProdutoDTO(Produto obj) {
super();
this.id = obj.getId();
this.descricao = obj.getDescricao();
this.foto = obj.getFoto();
this.fabricante = obj.getFabricante();
this.unidade = obj.getUnd().getDescricao();
// Recebendo as descriçoes das categorias
for (Categoria x : obj.getCategorias()) {
if (x != null) {
categorias.add(x.getDescricao());
}
}
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getFoto() {
return foto;
}
public void setFoto(String foto) {
this.foto = foto;
}
public String getFabricante() {
return fabricante;
}
public void setFabricante(String fabricante) {
this.fabricante = fabricante;
}
public String getUnidade() {
return unidade;
}
public void setUnidade(String unidade) {
this.unidade = unidade;
}
public List<String> getCategorias() {
return categorias;
}
public void setCategorias(List<String> categorias) {
this.categorias = categorias;
}
}
Return on category listing endpoint:
As you can see, in the return of the entpoint each category shows its list of products, however, each product brings the categories that it is part of, this because the ProductDTO contains this attribute that is important in other processes. Is there any way to omit the categories within the product breakdown? I look for an alternative other than creating another DTO without this attribute to be used.