Bom dia galera.
Meu primeiro post e eu ja venho com , o que para mim, é um problemão ^^
Estou aprendendo ainda a programar java web, então, muito dos erros que tenho as vezes sao coisas simples, mas que para mim que nao tem um bom conhecimento ainda, é complicado para fazer sozinho :/
O que esta pegando é o seguinte...
Estou desenvolvendo um sistema para garagem, coisa simples por enquanto..
Nele, preciso cadastrar um carro, mas preciso pegar o modelo dele de uma outra tabela, e estou tentando fazer isso atraves de um SelectOne
Eu ja tentei realmente de tudo, mas enfim, nao consegui fazer funcionar.
Se alguem pudesse me ajudar, eu agradeceria
Classe Carro - Esta gigante, pois foi importada do bancopublic class Carro implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Column(name = "placa")
private String placa;
@Basic(optional = false)
@Column(name = "ano")
private int ano;
@Basic(optional = false)
@Column(name = "cor")
private String cor;
@Basic(optional = false)
@Column(name = "motor")
private String motor;
@Basic(optional = false)
@Column(name = "combustivel")
private String combustivel;
@Basic(optional = false)
@Column(name = "kilometragem")
private double kilometragem;
@Basic(optional = false)
@Column(name = "data_compra")
private String dataCompra;
@Lob
@Column(name = "foto")
private byte[] foto;
@Basic(optional = false)
@Column(name = "chassi")
private String chassi;
@Basic(optional = false)
@Column(name = "valor_tabela_fipe")
private double valorTabelaFipe;
@Basic(optional = false)
@Column(name = "valor_compra")
private double valorCompra;
@Basic(optional = false)
@Column(name = "valor_venda")
private double valorVenda;
@Column(name = "qtd_dono")
private Integer qtdDono;
@Column(name = "copia_chave")
private String copiaChave;
@Column(name = "manual")
private String manual;
@Column(name = "pneu")
private String pneu;
@Column(name = "roda")
private String roda;
@Column(name = "observacao")
private String observacao;
@Column(name = "valor_agregado")
private Double valorAgregado;
@JoinColumn(name = "modelo_id", referencedColumnName = "id")
@ManyToOne(optional = false)
private Modelo modelo;
public Carro() {
}
public Carro(Integer id) {
this.id = id;
}
public Carro(Integer id, int ano, String cor, String motor, String combustivel, double kilometragem, String dataCompra, String chassi, double valorTabelaFipe, double valorCompra, double valorVenda) {
this.id = id;
this.ano = ano;
this.cor = cor;
this.motor = motor;
this.combustivel = combustivel;
this.kilometragem = kilometragem;
this.dataCompra = dataCompra;
this.chassi = chassi;
this.valorTabelaFipe = valorTabelaFipe;
this.valorCompra = valorCompra;
this.valorVenda = valorVenda;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPlaca() {
return placa;
}
public void setPlaca(String placa) {
this.placa = placa;
}
public int getAno() {
return ano;
}
public void setAno(int ano) {
this.ano = ano;
}
public String getCor() {
return cor;
}
public void setCor(String cor) {
this.cor = cor;
}
public String getMotor() {
return motor;
}
public void setMotor(String motor) {
this.motor = motor;
}
public String getCombustivel() {
return combustivel;
}
public void setCombustivel(String combustivel) {
this.combustivel = combustivel;
}
public double getKilometragem() {
return kilometragem;
}
public void setKilometragem(double kilometragem) {
this.kilometragem = kilometragem;
}
public String getDataCompra() {
return dataCompra;
}
public void setDataCompra(String dataCompra) {
this.dataCompra = dataCompra;
}
public byte[] getFoto() {
return foto;
}
public void setFoto(byte[] foto) {
this.foto = foto;
}
public String getChassi() {
return chassi;
}
public void setChassi(String chassi) {
this.chassi = chassi;
}
public double getValorTabelaFipe() {
return valorTabelaFipe;
}
public void setValorTabelaFipe(double valorTabelaFipe) {
this.valorTabelaFipe = valorTabelaFipe;
}
public double getValorCompra() {
return valorCompra;
}
public void setValorCompra(double valorCompra) {
this.valorCompra = valorCompra;
}
public double getValorVenda() {
return valorVenda;
}
public void setValorVenda(double valorVenda) {
this.valorVenda = valorVenda;
}
public Integer getQtdDono() {
return qtdDono;
}
public void setQtdDono(Integer qtdDono) {
this.qtdDono = qtdDono;
}
public String getCopiaChave() {
return copiaChave;
}
public void setCopiaChave(String copiaChave) {
this.copiaChave = copiaChave;
}
public String getManual() {
return manual;
}
public void setManual(String manual) {
this.manual = manual;
}
public String getPneu() {
return pneu;
}
public void setPneu(String pneu) {
this.pneu = pneu;
}
public String getRoda() {
return roda;
}
public void setRoda(String roda) {
this.roda = roda;
}
public String getObservacao() {
return observacao;
}
public void setObservacao(String observacao) {
this.observacao = observacao;
}
public Double getValorAgregado() {
return valorAgregado;
}
public void setValorAgregado(Double valorAgregado) {
this.valorAgregado = valorAgregado;
}
public Modelo getModelo() {
return modelo;
}
public void setModelo(Modelo modelo) {
this.modelo = modelo;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Carro)) {
return false;
}
Carro other = (Carro) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "Entidades.Carro[id=" + id + "]";
}
@Stateless
public class CarroFacade extends AbstractFacade<Carro> {
//@PersistenceContext(unitName = "garagem-ejbPU")
@PersistenceContext(unitName = "csPU")
private EntityManager em;
private static final String sqlListar = "SELECT * FROM garagem.carro ORDER BY id";
private String sql;
protected EntityManager getEntityManager() {
return em;
}
public CarroFacade() {
super(Carro.class);
}
// inicio do codigo para inserir
public void inserir (Carro carro) throws SQLException{
Connection conn = null;
conn = ConnectionFactory.getNewConnection();
if (carro.getId() == null) {
sql = "insert into garagem.carro (placa, ano, cor, motor, combustivel, kilometragem, "
+ "data_compra, chassi, valor_tabela_fipe, valor_compra, valor_venda, valor_agregado, qtd_dono, "
+ "copia_chave, manual, pneu, roda, observacao) "
+ "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
} else {
}
try {
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, carro.getPlaca());
stmt.setInt(2, carro.getAno());
stmt.setString(3, carro.getCor());
stmt.setString(4, carro.getMotor());
stmt.setString(5, carro.getCombustivel());
stmt.setDouble(6, carro.getKilometragem());
stmt.setString(7, carro.getDataCompra());
// stmt.setBytes(9, carro.getFoto());
stmt.setString(8, carro.getChassi());
stmt.setDouble(9, carro.getValorTabelaFipe());
stmt.setDouble(10, carro.getValorCompra());
stmt.setDouble(11, carro.getValorVenda());
stmt.setDouble(12, carro.getValorAgregado());
stmt.setInt(13, carro.getQtdDono());
stmt.setString(14, carro.getCopiaChave());
stmt.setString(15, carro.getManual());
stmt.setString(16, carro.getPneu());
stmt.setString(17, carro.getRoda());
stmt.setString(18, carro.getObservacao());
//if (carro.getId() != 0) {
//stmt.setInt(19, carro.getId());
// }
stmt.execute();
conn.close();
} catch (SQLException ex) {
Logger.getLogger(CarroFacade.class.getName()).log(Level.SEVERE, null, ex);
}
}
//final do codigo salvar
//codigo de excluir
public void excluir(Carro carro) throws SQLException {
Connection conn = null;
conn = ConnectionFactory.getNewConnection();
sql = "DELETE FROM garagem.carro WHERE id = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, carro.getId());
stmt.execute();
conn.close();
}
//final do codigo de excluir
public void alterar(Carro carro) throws SQLException{
Connection conn = null;
conn = ConnectionFactory.getNewConnection();
if (carro.getId() != 0) {
sql = "update garagem.carro set placa = ?, modelo_id = ?, ano = ?, cor = ?, motor = ?, combustivel = ?, "
+ "kilometragem = ?, data_compra = ?,"
+ " chassi = ?, valor_tabela_fipe = ?, valor_compra = ?, valor_venda = ?, valor_agregado = ?, qtd_dono = ?, "
+ "copia_chave = ?, manual = ?, pneu = ?, roda = ?, observacao = ? where id = ?";
} else {
}
try {
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, carro.getPlaca());
stmt.setInt(2, carro.getAno());
stmt.setString(3, carro.getCor());
stmt.setString(4, carro.getMotor());
stmt.setString(5, carro.getCombustivel());
stmt.setDouble(6, carro.getKilometragem());
stmt.setString(7, carro.getDataCompra());
//stmt.setBytes(9, carro.getFoto());
stmt.setString(8, carro.getChassi());
stmt.setDouble(9, carro.getValorTabelaFipe());
stmt.setDouble(10, carro.getValorCompra());
stmt.setDouble(12, carro.getValorVenda());
stmt.setDouble(12, carro.getValorAgregado());
stmt.setInt(13, carro.getQtdDono());
stmt.setString(14, carro.getCopiaChave());
stmt.setString(15, carro.getManual());
stmt.setString(16, carro.getPneu());
stmt.setString(17, carro.getRoda());
stmt.setString(18, carro.getObservacao());
stmt.setInt(19, carro.getId());
stmt.execute();
conn.close();
} catch (SQLException ex) {
Logger.getLogger(CarroFacade.class.getName()).log(Level.SEVERE, null, ex);
} catch (Exception e) {
}
}
//começo do codigo de listar todos
public List listaTodos() throws SQLException {
List<Carro> carros = new ArrayList<Carro>();
Connection conn = null;
conn = ConnectionFactory.getNewConnection();
try {
PreparedStatement stmt = conn.prepareStatement(sqlListar);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Carro carro = new Carro();
carro.setId(rs.getInt("id"));
carro.setPlaca(rs.getString("placa"));
carro.setAno(rs.getInt("ano"));
carro.setCor(rs.getString("cor"));
carro.setMotor(rs.getString("motor"));
carro.setCombustivel(rs.getString("combustivel"));
carro.setKilometragem(rs.getDouble("kilometragem"));
carro.setDataCompra(rs.getString("data_compra"));
// carro.setFoto(rs.getBytes("foto"));
carro.setChassi(rs.getString("chassi"));
carro.setValorTabelaFipe(rs.getDouble("valor_tabela_fipe"));
carro.setValorCompra(rs.getDouble("valor_compra"));
carro.setValorVenda(rs.getDouble("valor_venda"));
carro.setValorAgregado(rs.getDouble("valor_agregado"));
carro.setQtdDono(rs.getInt("qtd_donos"));
carro.setCopiaChave(rs.getString("copia_chave"));
carro.setManual(rs.getString("manual"));
carro.setPneu(rs.getString("pneu"));
carro.setRoda(rs.getString("roda"));
carro.setObservacao(rs.getString("observacao"));
carros.add(carro);
}
conn.close();
} catch (SQLException ex) {
Logger.getLogger(CarroFacade.class.getName()).log(Level.SEVERE, null, ex);
}
return carros;
}
}
@ManagedBean
@RequestScoped
public class CarroBean {
private Carro carro;
private Carro carroSelecionado;
private CarroFacade cf;
private List<Carro> carros;
private StreamedContent foto;
public CarroBean() throws SQLException {
carro = new Carro();
carroSelecionado = new Carro();
cf = new CarroFacade();
carros = new ArrayList<Carro>();
carros = cf.listaTodos();
}
public Carro getCarro() {
return carro;
}
public void setCarro(Carro carro) {
this.carro = carro;
}
public Carro getCarroSelecionado() {
return carroSelecionado;
}
public void setCarroSelecionado(Carro carroSelecionado) {
this.carroSelecionado = carroSelecionado;
}
public CarroFacade getCf() {
return cf;
}
public void setCf(CarroFacade cf) {
this.cf = cf;
}
public List<Carro> getCarros() {
return carros;
}
public void setCarros(List<Carro> carros) {
this.carros = carros;
}
public StreamedContent getFoto() {
return foto;
}
public void setFoto(StreamedContent foto) {
this.foto = foto;
}
/* public void handleFileUpload(FileUploadEvent event) {
try {
foto = new DefaultStreamedContent(event.getFile().getInputstream());
byte[] foto2 = event.getFile().getContents();
this.carro.setFoto(foto2);
} catch (IOException ex) {
Logger.getLogger(CarroBean.class.getName()).log(Level.SEVERE, null, ex);
}
}*/
//-----------------------------------------------------------
//-----------------------------------------------------------
//-----------------------------------------------------------
//-----------------------------------------------------------
//-----------------------------------------------------------
//-----------------------------------------------------------
public void salvar() {
try {
cf.inserir(carro);
} catch (Exception e) {
System.out.println("erro na hora de salvar");
}
}
public void excluir() {
try {
cf.excluir(carro);
carros = cf.listaTodos();
} catch (Exception e) {
System.out.println("erro na hora de deletar");
}
}
public void alterar(){
try {
cf.alterar(carro);
} catch (Exception e) {
System.out.println("erro na hora de alterar");
}
}
public void carros() {
try {
cf.listaTodos();
} catch (Exception e) {
System.out.println("erro na hora de listar");
}
}
}
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Carro's Shop / Bem Vindo ao Painel</title>
<link href="../img/favicon.png" rel="shortcut icon" />
<link rel="stylesheet" type="text/css" href="../css/painel.css"/>
</h:head>
<h:body>
<f:view>
<!-- INCLUDE DO MENU -->
<ui:include src="menu.xhtml"></ui:include>
<div class="meio" style="margin-top: 20px; margin-bottom: 20px;">
<h1 style="font-size: 25px; margin-bottom: 20px;">Cadastrar Carro</h1>
<h:form>
<p:panel header="Preencha Corretamente o Formulário abaixo">
<div style="width: 480px; margin: 0 auto; margin-top: 20px;">
<h:panelGrid columns="2" cellpadding="5">
<h:outputText value="Placa: " />
<p:inputText value="#{carroBean.carro.placa}" style="width: 74px; text-transform: uppercase;" styleClass="espacoInput"/>
<h:outputText value="Modelo: "/>
<h:selectOneMenu value="#{modeloBean.modelo.id}" style="width: 160px; border: 1px solid #CCC;" styleClass="espacoInput">
<f:selectItems value="#{modeloBean.modelos}"/>
</h:selectOneMenu>
<h:outputText value="Ano: " />
<p:inputText value="#{carroBean.carro.ano}" style="width: 40px;" styleClass="espacoInput" size="9"/>
<h:outputText value="Cor: " />
<p:inputText value="#{carroBean.carro.cor}" styleClass="espacoInput"/>
<h:outputText value="Motor: " />
<p:inputText value="#{carroBean.carro.motor}" styleClass="espacoInput" style="width: 27px;"/>
<h:outputText value="Combustivel: " />
<p:inputText value="#{carroBean.carro.combustivel}" styleClass="espacoInput"/>
<h:outputText value="Kilometragem: " />
<p:inputText value="#{carroBean.carro.kilometragem}" styleClass="espacoInput"/>
<h:outputText value="Data da Compra: " />
<p:inputText value="#{carroBean.carro.dataCompra}" styleClass="espacoInput" size="9"/>
<h:inputHidden value="#{carroBean.carro.foto}"/>
<h:inputHidden value="#{carroBean.carro.modelo}"/>
<h:outputText value="Chassi: " />
<p:inputText value="#{carroBean.carro.chassi}" styleClass="espacoInput" size="9"/>
<h:outputText value="Valor Tab. FIPE - R$:" />
<p:inputText value="#{carroBean.carro.valorTabelaFipe}" styleClass="espacoInput"/>
<h:outputText value="Valor da Compra - R$:" />
<p:inputText value="#{carroBean.carro.valorCompra}" styleClass="espacoInput" />
<h:outputText value="Valor de Venda - R$:" />
<p:inputText value="#{carroBean.carro.valorVenda}" styleClass="espacoInput" />
<h:outputText value="Valor Agregado - R$:" />
<p:inputText value="#{carroBean.carro.valorAgregado}" styleClass="espacoInput" />
<h:outputText value="Quantidade de Donos: " />
<p:inputText value="#{carroBean.carro.qtdDono}" styleClass="espacoInput" />
<h:outputText value="Cópia de Chave: " />
<p:inputText value="#{carroBean.carro.copiaChave}" styleClass="espacoInput"/>
<h:outputText value="Manual: " />
<p:inputText value="#{carroBean.carro.manual}" styleClass="espacoInput"/>
<h:outputText value="Pneus:" />
<p:inputText value="#{carroBean.carro.pneu}" style="width: 87px; text-transform: uppercase;" styleClass="espacoInput"/>
<h:outputText value="Rodas (Em Polegadas): " />
<p:inputText value="#{carroBean.carro.roda}" style="width: 20px;" styleClass="espacoInput"/>
<h:outputText value="Observação: " />
<p:inputText value="#{carroBean.carro.observacao}" style="width: 300px; height: 300px;" styleClass="espacoInput" size="200"/>
<p:commandButton styleClass="botoesForm" value="Limpar" type="reset" />
<p:commandButton styleClass="botoesForm" value="Cadastrar" action="#{carroBean.salvar}" update="display" oncomplete="dialog.show()"/>
</h:panelGrid>
</div>
</p:panel>
<!-- TELA RESPOSTA QUANDO CLICA NO BOTÃO "CADASTRAR"-->
<p:dialog widgetVar="dialog" width="280" height="80" modal="true">
<h:panelGrid id="display" columns="2" cellpadding="5">
<h:outputText value="Carro Cadastrado com Sucesso." />
</h:panelGrid>
</p:dialog>
</h:form>
</div> <!-- AQUI TERMINA O CONTEUDO -->
</f:view>
</h:body>
</html>
Eu consigo puxar o modelo e a descrição da tabela modelo, só nao sei como fazer para conseguir gravar o o Id dele na tabela Carro.
Retirei do facade a opção de inserir , alterar e listar esse modelo na tabela Carro.
Como poderão notar, há um atributo para inserir foto, mas como esta muito complicado para mim por enquanto conseguir pegar uma imagem, gravar ela e depois exibi-la
no site, deixei de lado por enquanto
Procurei implementar o SelectOne de acordo com um tutorial que encontrei na internet
http://www.lucasallan.com/2010/01/05/jsf-utilizando-o-selectonemenu-de-maneira-facil/
Mas mesmo assim, nao consegui
Se alguem puder me ajudar, eu agradeço muito. As vezes é algo simples, mas que para mim, que nao sabe, sera que grande ajuda.
Obrigado.


