o método
@GetMapping
public ResponseEntity<Page<DadosDetalheProposta>> listar(@PageableDefault(size = 10, sort = {"descricao"}) Pageable paginacao) {
var proposta = propostaService.listar(paginacao);
return ResponseEntity.ok(proposta);
}
do controller de protosta está dando erro ao carregar os dados da entidade(é uma classe).
método do service:
public Page<DadosDetalheProposta> listar(Pageable paginacao) {
return repository.findAll(paginacao)
.map(proposta -> new DadosDetalheProposta(proposta));
}
record:
package br.com.connect.crm.domain.proposta.vo;
import br.com.connect.crm.domain.entidade.entity.Entidade;
import br.com.connect.crm.domain.proposta.entity.Proposta;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
public record DadosDetalheProposta(
Long id,
Integer numero,
String descricao,
LocalDate data,
BigDecimal valor,
Entidade entidade,
TipoProposta tipo,
StatusProposta status) implements Serializable {
public DadosDetalheProposta(Long id, Integer numero, String descricao, LocalDate data, BigDecimal valor, Entidade entidade, TipoProposta tipo, StatusProposta status) {
this.id = id;
this.numero = numero;
this.descricao = descricao;
this.data = data;
this.valor = valor;
this.entidade = entidade;
this.tipo = tipo;
this.status = status;
}
public DadosDetalheProposta(Proposta proposta) {
this(
proposta.getId(),
proposta.getNumero(),
proposta.getDescricao(),
proposta.getData(),
proposta.getValor(),
new Entidade(
proposta.getEntidade().getId(),
proposta.getEntidade().getNome(),
proposta.getEntidade().getTipo()
),
proposta.getTipo(),
proposta.getStatus()
);
}
classe :
package br.com.connect.crm.domain.proposta.entity;
import br.com.connect.crm.domain.entidade.entity.Entidade;
import br.com.connect.crm.domain.proposta.vo.DadosDetalheProposta;
import br.com.connect.crm.domain.proposta.vo.DadosProposta;
import br.com.connect.crm.domain.proposta.vo.StatusProposta;
import br.com.connect.crm.domain.proposta.vo.TipoProposta;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDate;
@Entity
@Table(name = "propostas")
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class Proposta {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Integer numero;
private String descricao;
private LocalDate data;
private BigDecimal valor;
@Enumerated(EnumType.STRING)
private TipoProposta tipo;
@Enumerated(EnumType.STRING)
private StatusProposta status;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "entidade_id")
private Entidade entidade;
public Proposta(DadosProposta dados, Entidade entidade) {
this.numero = dados.numero();
this.descricao = dados.descricao();
this.data = dados.data();
this.valor = dados.valor();
this.tipo = dados.tipo();
this.entidade = entidade;
this.status = dados.status();
}
public void atualizarDados(DadosProposta dados) {
this.numero = dados.numero();
this.descricao = dados.descricao();
this.data = dados.data();
this.valor = dados.valor();
this.tipo = dados.tipo();
this.entidade = entidade;
this.status = dados.status();
}
public Proposta(DadosDetalheProposta dados) {
this.id = dados.id();
this.numero = dados.numero();
this.descricao = dados.descricao();
this.valor = dados.valor();
this.tipo = dados.tipo();
this.entidade = entidade;
this.status = dados.status();
}
}