POST nos campos codigo [cidade] e [UF] no banco de dados.
Bom dia galera, estou passando por um aperreio de 5 dias que não consigo descobrir o problema.
Criei uma lista de cidades por UF usando o mesmo método post do cadastro de cliente, afinal é o mesmo botão, quando ele salva os dados de um novo cliente precisa inserir os códigos da cidade no BD. Mas gera erro que a cidade está sendo selecionada em string sendo que no BD espera inteiros. Segue abaixo as classes e os métodos de cada um:
package br.com.alpha.core.modelo.entidades;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;
import lombok.Data;
@Data
@Entity
@Table(name="Cidades")
public class Cidade {
@EmbeddedId
private CidadeId id;
@Column(name="Cidade")
private String nome;
@Column(name="CodigoIBGE")
private Integer codigoIBGE;
@Column(name="UF", insertable=false, updatable=false)
private String uf;
}
=====================================================
package br.com.alpha.core.modelo.entidades;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import br.com.alpha.vendas.modelo.entidades.CondicaoDePagamentoValorMinimo;
import br.com.alpha.vendas.modelo.entidades.FormaDePagamento;
import lombok.Data;
@Data
@Entity
@Table(name="UF")
public class UF {
@Id
@Column(name="Sigla")
private String id;
@Column(name="Descricao")
private String descricao;
@Column(name="CodigoRegiao")
private Integer regiao;
@Column(name="TabelaWebLoja")
private Integer tabelaWebLoja;
@ManyToMany
@JoinTable(name="UF_FormadePagto",
joinColumns=@JoinColumn(name="UF",referencedColumnName="Sigla"),
inverseJoinColumns=@JoinColumn(name="FormadePagto",referencedColumnName="Codigo"))
private List<FormaDePagamento> formaDePagamento;
@OneToMany
@JoinColumn(name="UF",referencedColumnName="Sigla")
private List<CondicaoDePagamentoValorMinimo> condicoes;
}
===============================================================================================
package br.com.alpha.core.modelo.entidades;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import lombok.Data;
@Embeddable
@Data
public class CidadeId implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name="Codigo")
private Integer codigo;
@Column(name="UF")
private String uf;
}
===================================================
package br.com.alpha.core.modelo.entidades;
import java.util.Random;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.springframework.security.authentication.encoding.Md5PasswordEncoder;
import lombok.Data;
@Data
@Entity
@Table(name="Clientes")
public class Cliente {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name="Codigo")
private Integer id;
@Column(name="Nome")
private String nome;
@Column(name="RazaoSocial")
private String razaoSocial;
@Column(name="CNPJCPF")
private String cnpjCpf;
@Column(name="UF",insertable=false,updatable=false)
private String uf;
@Column(name="Endereco")
private String endereco;
@Column(name="Bairro")
private String bairro;
@Column(name="Fone")
private String fone;
@Column(name="Cep")
private String cep;
@Column(name="Email")
private String email;
@Column(name="SiteUsuario")
private String usuario;
@Column(name="SiteSenha")
private String senha;
@ManyToOne
@JoinColumns({@JoinColumn(name="Cidade",referencedColumnName="Codigo"),
@JoinColumn(name="UF",referencedColumnName="UF")})
private Cidade cidade;
public String generateNewPassword() {
char[] chart = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
'Z' };
char[] senha = new char[6];
Random rdm = new Random();
for (int x = 0; x < 6; x++) {
senha[x] = chart[rdm.nextInt(chart.length)];
}
String password = new String(senha);
this.senha = new Md5PasswordEncoder().encodePassword(password, null);
return password;
}
/*
@ManyToMany
private List<FormaDePagamento> formaDePagamento;
@ManyToMany
private List<CondicaoDePagamento> condicaoDePagamento;
*/
}
======================================================================
package br.com.alpha.core.controlador;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import br.com.alpha.core.modelo.entidades.Cliente;
import br.com.alpha.core.repositorio.ClienteRepositorio;
@Controller
public class ClienteControlador {
@Value("${alpha.url}")
private String url;
@Autowired
private ClienteRepositorio clienteRepositorio;
@RequestMapping("/home")
public @ResponseBody String home(){
System.out.println("home");
return "Home";
}
@RequestMapping("/cliente/")
public @ResponseBody Cliente findById(@PathVariable("id") Integer id){
System.out.println(id);
Cliente cliente = clienteRepositorio.findOne(id);
return cliente;
}
@RequestMapping(value="/cliente/salvar",method=RequestMethod.POST)
public ModelAndView salvarCliente (@ModelAttribute("cliente") Cliente cliente){
clienteRepositorio.save(cliente);
return new ModelAndView("redirect:"+url+"/distribuidor/cadCliente.php");
}
}
Criei uma lista de cidades por UF usando o mesmo método post do cadastro de cliente, afinal é o mesmo botão, quando ele salva os dados de um novo cliente precisa inserir os códigos da cidade no BD. Mas gera erro que a cidade está sendo selecionada em string sendo que no BD espera inteiros. Segue abaixo as classes e os métodos de cada um:
package br.com.alpha.core.modelo.entidades;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;
import lombok.Data;
@Data
@Entity
@Table(name="Cidades")
public class Cidade {
@EmbeddedId
private CidadeId id;
@Column(name="Cidade")
private String nome;
@Column(name="CodigoIBGE")
private Integer codigoIBGE;
@Column(name="UF", insertable=false, updatable=false)
private String uf;
}
=====================================================
package br.com.alpha.core.modelo.entidades;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import br.com.alpha.vendas.modelo.entidades.CondicaoDePagamentoValorMinimo;
import br.com.alpha.vendas.modelo.entidades.FormaDePagamento;
import lombok.Data;
@Data
@Entity
@Table(name="UF")
public class UF {
@Id
@Column(name="Sigla")
private String id;
@Column(name="Descricao")
private String descricao;
@Column(name="CodigoRegiao")
private Integer regiao;
@Column(name="TabelaWebLoja")
private Integer tabelaWebLoja;
@ManyToMany
@JoinTable(name="UF_FormadePagto",
joinColumns=@JoinColumn(name="UF",referencedColumnName="Sigla"),
inverseJoinColumns=@JoinColumn(name="FormadePagto",referencedColumnName="Codigo"))
private List<FormaDePagamento> formaDePagamento;
@OneToMany
@JoinColumn(name="UF",referencedColumnName="Sigla")
private List<CondicaoDePagamentoValorMinimo> condicoes;
}
===============================================================================================
package br.com.alpha.core.modelo.entidades;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import lombok.Data;
@Embeddable
@Data
public class CidadeId implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name="Codigo")
private Integer codigo;
@Column(name="UF")
private String uf;
}
===================================================
package br.com.alpha.core.modelo.entidades;
import java.util.Random;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.springframework.security.authentication.encoding.Md5PasswordEncoder;
import lombok.Data;
@Data
@Entity
@Table(name="Clientes")
public class Cliente {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name="Codigo")
private Integer id;
@Column(name="Nome")
private String nome;
@Column(name="RazaoSocial")
private String razaoSocial;
@Column(name="CNPJCPF")
private String cnpjCpf;
@Column(name="UF",insertable=false,updatable=false)
private String uf;
@Column(name="Endereco")
private String endereco;
@Column(name="Bairro")
private String bairro;
@Column(name="Fone")
private String fone;
@Column(name="Cep")
private String cep;
@Column(name="Email")
private String email;
@Column(name="SiteUsuario")
private String usuario;
@Column(name="SiteSenha")
private String senha;
@ManyToOne
@JoinColumns({@JoinColumn(name="Cidade",referencedColumnName="Codigo"),
@JoinColumn(name="UF",referencedColumnName="UF")})
private Cidade cidade;
public String generateNewPassword() {
char[] chart = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
'Z' };
char[] senha = new char[6];
Random rdm = new Random();
for (int x = 0; x < 6; x++) {
senha[x] = chart[rdm.nextInt(chart.length)];
}
String password = new String(senha);
this.senha = new Md5PasswordEncoder().encodePassword(password, null);
return password;
}
/*
@ManyToMany
private List<FormaDePagamento> formaDePagamento;
@ManyToMany
private List<CondicaoDePagamento> condicaoDePagamento;
*/
}
======================================================================
package br.com.alpha.core.controlador;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import br.com.alpha.core.modelo.entidades.Cliente;
import br.com.alpha.core.repositorio.ClienteRepositorio;
@Controller
public class ClienteControlador {
@Value("${alpha.url}")
private String url;
@Autowired
private ClienteRepositorio clienteRepositorio;
@RequestMapping("/home")
public @ResponseBody String home(){
System.out.println("home");
return "Home";
}
@RequestMapping("/cliente/")
public @ResponseBody Cliente findById(@PathVariable("id") Integer id){
System.out.println(id);
Cliente cliente = clienteRepositorio.findOne(id);
return cliente;
}
@RequestMapping(value="/cliente/salvar",method=RequestMethod.POST)
public ModelAndView salvarCliente (@ModelAttribute("cliente") Cliente cliente){
clienteRepositorio.save(cliente);
return new ModelAndView("redirect:"+url+"/distribuidor/cadCliente.php");
}
}
Justino
Curtidas 0