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

Filtro com erro

No curso foi apresentado um filto usando String, estou tentando filtrar por data usando o LocalDate mas esta me retornando um erro quando digito o seguinte na URL: http://localhost:8080/transacoes?dataDaTransacao=2019-05-05

Mensagem de erro:

Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Jul 30 06:54:07 BRT 2019 There was an unexpected error (type=Internal Server Error, status=500). No primary or default constructor found for class java.time.LocalDate

A seguir o Codigo da Class Controller

ackage com.bytebank.gestaodegastos.controller;

import java.time.LocalDate;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.bytebank.gestaodegastos.controller.dto.TransacaoDto;
import com.bytebank.gestaodegastos.modelo.Transacao;
import com.bytebank.gestaodegastos.repository.TransacaoRepository;

@Controller
@RestController
public class TransacoesController {

    @Autowired
    private TransacaoRepository transacaoRepository;

    @RequestMapping("/transacoes")
    public List<TransacaoDto> lista(LocalDate dataDaTransacao) {
        System.out.println(dataDaTransacao);

        if(dataDaTransacao == null) {
            List<Transacao> transacao = transacaoRepository.findAll();
            return TransacaoDto.converter(transacao);
        }else {
            List<Transacao> transacao = transacaoRepository.findByDataDaTransacao(dataDaTransacao);
            return TransacaoDto.converter(transacao);
        }

    }
}

o Codigo do repository

package com.bytebank.gestaodegastos.repository;

import java.time.LocalDate;
import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.web.bind.annotation.PathVariable;

import com.bytebank.gestaodegastos.modelo.Transacao;

public interface TransacaoRepository extends JpaRepository<Transacao, Long>{

    List<Transacao> findByDataDaTransacao(@PathVariable("dataDaTransacao") LocalDate dataDaTransacao);


}

O codigo do model:

package com.bytebank.gestaodegastos.modelo;

import java.time.LocalDate;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

@Entity
public class Transacao {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String descricao;
    private double valor;
    private LocalDate dataDaTransacao = LocalDate.now();
    @ManyToOne
    private Usuario codigoUsuaio;

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Transacao other = (Transacao) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        return true;
    }

    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 double getValor() {
        return valor;
    }

    public void setValor(double valor) {
        this.valor = valor;
    }

    public Usuario getCodigoUsuaio() {
        return codigoUsuaio;
    }

    public void setCodigoUsuaio(Usuario codigoUsuaio) {
        this.codigoUsuaio = codigoUsuaio;
    }

    public LocalDate getData() {
        return dataDaTransacao;
    }

    public void setData(LocalDate dataDaTransacao) {
        this.dataDaTransacao = dataDaTransacao;
    }
}
1 resposta
solução!

Vou fechar essa duvida, pois ela esta duplicada: https://cursos.alura.com.br/forum/topico-filtar-por-data-88671