Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Estou criando mais uma tabela no server e esta dando erro: This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sou novato e estou buscando a uma semana a resposta para o seguinte problema.

Tenho um código que estou adaptando o server para essa parte final do codigo, ja consegui inserir quando vou alterar ou deletar ela apresenta o seguinte erro:

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

Tue Apr 17 15:40:19 AMT 2018 There was an unexpected error (type=Internal Server Error, status=500). id da tesouraria já existente

Não estou conseguindo colocar os códigos, vou inserir abaixo

O Model é o seguinte

     package br.com.caelum.alura.model;      

    import javax.persistence.Convert;      
    import javax.persistence.Entity;      
    import javax.persistence.Id;      

    import org.hibernate.annotations.GenericGenerator;      
    import org.joda.time.LocalDateTime;      

    import com.fasterxml.jackson.annotation.JsonIgnore;      
    import com.fasterxml.jackson.annotation.JsonProperty;      

    import br.com.caelum.alura.converter.LocalDateTimeConverter;      

    @Entity       
    public class Tesouraria {      

    @Id       
    @GenericGenerator(name = "CODTESOURARIA", strategy = "uuid2")      
 private String CODTESOURARIA ;
 private int     SINCRONIZADO ;
 private int     DESATIVADO ;
 private String CODNUCLEO ;
 private String VALORTESOURARIA ;
 private String CODATIVIDADE ;
 private String DATALANCAMENTO ;
 private String CODCONTA ;
 private String DATAVENCIMENTO ;
 private String MATRICULA ;
 private String DATAPAGAMENTO ;
 private int     SEQUENCIA ;
 private String CODGESTAO ;
 private String DEBITOCREDITO ;
 private String SITUACAO ;
 private String CODRECIBO ;
 private String DESCRICAOTESOURARIA ;
 private String SALDOTESOURARIA ;

//     Presione Atalho para gerar Get e Set  
//     Presione Atalho para gerar Get e Set  
//     Presione Atalho para gerar Get e Set  

    @JsonIgnore      
    @Convert(converter = LocalDateTimeConverter.class)      
    private LocalDateTime modificacao;    

    public String getCODTESOURARIA()                     {return CODTESOURARIA;}
    public void setCODTESOURARIA(String cODTESOURARIA)     {this.CODTESOURARIA = cODTESOURARIA;}

    public int getSINCRONIZADO() {    return SINCRONIZADO;}
    public void setSINCRONIZADO(int sINCRONIZADO) {this.SINCRONIZADO = sINCRONIZADO;    }

    public String getCODNUCLEO() {        return CODNUCLEO;}
    public void setCODNUCLEO(String cODNUCLEO) {this.CODNUCLEO = cODNUCLEO;}

    public String getVALORTESOURARIA() {return VALORTESOURARIA;}
    public void setVALORTESOURARIA(String vALORTESOURARIA) {this.VALORTESOURARIA = vALORTESOURARIA;}

    public String getCODATIVIDADE() {return CODATIVIDADE;}
    public void setCODATIVIDADE(String cODATIVIDADE) {this.CODATIVIDADE = cODATIVIDADE;}

    public String getDATALANCAMENTO() {return DATALANCAMENTO;}
    public void setDATALANCAMENTO(String dATALANCAMENTO) {this.DATALANCAMENTO = dATALANCAMENTO;}

    public String getCODCONTA() {return CODCONTA;}
    public void setCODCONTA(String cODCONTA) {this.CODCONTA = cODCONTA;}

    public String getDATAVENCIMENTO() {return DATAVENCIMENTO;}
    public void setDATAVENCIMENTO(String dATAVENCIMENTO) {this.DATAVENCIMENTO = dATAVENCIMENTO;}

    public String getMATRICULA() {return MATRICULA;}
    public void setMATRICULA(String mATRICULA) {this.MATRICULA = mATRICULA;}

    public String getDATAPAGAMENTO() {    return DATAPAGAMENTO;}
    public void setDATAPAGAMENTO(String dATAPAGAMENTO) {this.DATAPAGAMENTO = dATAPAGAMENTO;}

    public int getSEQUENCIA() {return SEQUENCIA;}
    public void setSEQUENCIA(int sEQUENCIA) {this.SEQUENCIA = sEQUENCIA;}

    public String getCODGESTAO() {return CODGESTAO;}
    public void setCODGESTAO(String cODGESTAO) {this.CODGESTAO = cODGESTAO;}

    public String getDEBITOCREDITO() {return DEBITOCREDITO;}
    public void setDEBITOCREDITO(String dEBITOCREDITO) {this.DEBITOCREDITO = dEBITOCREDITO;}

    public String getSITUACAO() {return SITUACAO;}
    public void setSITUACAO(String sITUACAO) {this.SITUACAO = sITUACAO;}

    public String getCODRECIBO()                 {return CODRECIBO;}
    public void setCODRECIBO(String cODRECIBO)     {this.CODRECIBO = cODRECIBO;}

    public String getDESCRICAOTESOURARIA() {return DESCRICAOTESOURARIA;}
    public void setDESCRICAOTESOURARIA(String dESCRICAOTESOURARIA) {this.DESCRICAOTESOURARIA = dESCRICAOTESOURARIA;}

    public String getSALDOTESOURARIA() {return SALDOTESOURARIA;}
    public void setSALDOTESOURARIA(String sALDOTESOURARIA) {SALDOTESOURARIA = sALDOTESOURARIA;}

    public LocalDateTime getmodificacao()     { return modificacao;}       
    public void modificado()                {this.modificacao = LocalDateTime.now();}       
    public void setmodificacao ()             {this.modificacao = LocalDateTime.now();}

    public int     getDESATIVADO()             {return DESATIVADO;}
    public void desativa()                     {this.DESATIVADO = 1;}     

    @Override      
    public int hashCode() 
    {       
    final int prime = 31;       
    int result = 1;      
    result = prime * result + ((CODTESOURARIA == null) ? 0 : CODTESOURARIA.hashCode
3 respostas

O Controller que fiz foi:

package br.com.caelum.alura.controller;      
import org.springframework.beans.factory.annotation.Autowired;      
import org.springframework.stereotype.Controller;      
import org.springframework.web.bind.annotation.ModelAttribute;      
import org.springframework.web.bind.annotation.PathVariable;      
import org.springframework.web.bind.annotation.RequestMapping;      
import org.springframework.web.bind.annotation.RequestMethod;      
import org.springframework.web.servlet.ModelAndView;      
import org.springframework.web.servlet.mvc.support.RedirectAttributes;      
import br.com.caelum.alura.model.Tesouraria ;      
import br.com.caelum.alura.service.TesourariaService;      
import br.com.caelum.alura.utils.TesourariaUtils;      
@Controller       
@RequestMapping("tesouraria")      
public class TesourariaController {      
    private TesourariaService tesourariaService;    

    @Autowired      
    public TesourariaController(TesourariaService tesourariaService)
    {
        this.tesourariaService = tesourariaService;
        }      

    @RequestMapping("form")      
    public ModelAndView form(Tesouraria tesouraria)
    {       
        return preparaTesourariaParaForm(tesouraria);       
    }     

    @RequestMapping(value = "{id}", method = RequestMethod.GET)      
    public ModelAndView busca(@PathVariable("id") String id)
    {       
        Tesouraria tesouraria = tesourariaService.busca(id);       
        if (tesouraria == null) 
        {       
            return new ModelAndView("redirect:tesouraria");       
        }      
        return preparaTesourariaParaForm(tesouraria);       
    }      

    private ModelAndView preparaTesourariaParaForm(Tesouraria tesouraria)
    {       
        ModelAndView mav = new ModelAndView("tesouraria/formulario");       
        mav.addObject("tesouraria" , tesouraria);       
        return mav;      
    }

    @RequestMapping(method = RequestMethod.POST)      
    public String salva(@ModelAttribute("tesouraria") Tesouraria tesouraria, RedirectAttributes attributes)
    {       
        tesourariaService.salva(tesouraria);       
        attributes.addFlashAttribute("info", "tesouraria salvo");       
        return "redirect:tesouraria" ;      
    }

    @RequestMapping(method = RequestMethod.GET)      
    public ModelAndView lista()       
    { 
        return new ModelAndView("tesouraria/lista",
                                "tesourarias",
                                tesourariaService.getLista()); }      
}

Irei colocar o restante no proximo tópico O RestControler é o seguinte

insira seu código aqui

Se tiver como enviar por email. Acho mais fácil.

solução!

Bom dia, Jeronimo! Como vai?

Vc está tendo esse problema pelo motivo que o erro descreve:

id da tesouraria já existente

Ou seja, provavelmente quando vc vai alterar um objeto do tipo Tesouraria vc deve chamar o método salva(), que tenta salvar no BD quando na realidade vc está querendo alterar, mas como o ID da tesouraria já existe, vc obtém esse erro.

Para resolver o seu problema vc precisará criar a lógica apropriada que faça a alteração no BD. Algo desse jeito:

@RequestMapping(value="/atualiza", method=RequestMethod.POST)      
public String atualiza(@ModelAttribute("tesouraria") Tesouraria tesouraria, RedirectAttributes attributes) {       
     tesourariaService.atualiza(tesouraria);       

     // restante do código omitido...
}

Grande abraço e bons estudos.