Quantcast
Channel: Active questions tagged return-value - Stack Overflow
Viewing all articles
Browse latest Browse all 210

Retorno do método save() do JPA Repository retorna as classes de composição como nulas [closed]

$
0
0

Criei a seguinte entidade e DTO:

@Entity@AllArgsConstructor@NoArgsConstructor@Datapublic class Lancamento {@Id@GeneratedValue(strategy = GenerationType.AUTO)private long id;@NotBlank@NotNull@Column(length = 10)private String data;@Positive@Column(nullable = false, columnDefinition = "DECIMAL(10, 2)")private double valor;@NotBlank@NotNull    @Column(length = 100)private String descricao;@ManyToOne@JoinColumn(name = "categoria_id")private Categoria categoria;@ManyToOne@JoinColumn(name = "cartao_id")private Cartao cartao;}
`public record LancamentoDTO( @Id Long id,                              @NotBlank @NotNull String data,                              @NotBlank @NotNull String descricao,                              @Positive double valor,                              CategoriaDTO categoria,                              CartaoDTO cartao) {}`

Essa é a classe de serviço que chama o método save() do repostório:

@Service    public class LancamentoService {    private final LancamentoRepository lancamentoRepository;    private final LancamentoMapper mapper;    public LancamentoService(LancamentoRepository lancamentoRepository, LancamentoMapper mapper) {        this.lancamentoRepository = lancamentoRepository;        this.mapper = mapper;    }    public LancamentoDTO incluirLancamento(LancamentoDTO lancamento) {        return  mapper.toDTO(lancamentoRepository.save(mapper.toEntity(lancamento)));    }

O mapper foi construído da seguinte forma:

@Componentpublic class LancamentoMapper {    public LancamentoDTO toDTO(Lancamento lancamento) {        if (lancamento == null) {            return null;        }        return new LancamentoDTO(lancamento.getId(),                                  lancamento.getData(),                                 lancamento.getDescricao(),                                 lancamento.getValor(),                                  CategoriaMapper.toDTO(lancamento.getCategoria()),                                  CartaoMapper.toDTO(lancamento.getCartao()));    }    public Lancamento toEntity(LancamentoDTO lancamentoDTO) {        if (lancamentoDTO == null) {            return null;        }        Lancamento lancamento = new Lancamento();        if (lancamentoDTO.id() != null) {            lancamento.setId(lancamentoDTO.id());        }        lancamento.setData(lancamentoDTO.data());        lancamento.setDescricao(lancamentoDTO.descricao());        lancamento.setValor(lancamentoDTO.valor());        lancamento.setCategoria(CategoriaMapper.toEntity(lancamentoDTO.categoria()));        lancamento.setCartao(CartaoMapper.toEntity(lancamentoDTO.cartao()));        return lancamento;    }}

Uso o seguinte JSON para requisição:

{"data": "19/07/2024","valor": "150","descricao": "Abastecimento","categoria": {"type": "despesa","id": "1"},"cartao": { "id": "1" }}

Antes de enviar a requisição para criar um novo lançamento, eu crio uma nova categoria e um novo cartão e os associo a requisição. No entanto, no JSON de retorno, as classes de composição (categoria e cartão) são retornadas nulas:

{"id": 2,"data": "19/07/2024","descricao": "Abastecimento","valor": 150.0,"categoria": {"type": "despesa","id": 1,"nome": null,"meta": 0.0    },"cartao": {"id": 1,"nome": null    }}

Como poderia fazer para que as classes de composição retornassem com dados?


Viewing all articles
Browse latest Browse all 210

Trending Articles