Galera vamos la pra ver se alguem consgue me tirar esta duvida cruel
tenho a entidade venda, que recebe 1 cliente o codigo dela esta assim
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Model;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
/**
*
* @author Fred
*/
@Entity
@Table(name="venda")
public class Venda implements Serializable {
@Id
@GeneratedValue
private Long id;
private Double valor;
@OneToOne
private Cliente cliente;
@OneToMany
private List<Produto> produtos;
public Venda(){
}
public Venda(Long id, Double valor, Cliente cliente, List<Produto> produtos){
this.id = id;
this.valor = valor;
this.cliente = cliente;
this.produtos = produtos;
}
/**
* @return the id
*/
public Long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(Long id) {
this.id = id;
}
/**
* @return the valor
*/
public Double getValor() {
return valor;
}
/**
* @param valor the valor to set
*/
public void setValor(Double valor) {
this.valor = valor;
}
/**
* @return the clientes
*/
public Cliente getCliente() {
return cliente;
}
/**
* @param clientes the clientes to set
*/
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
/**
* @return the produtos
*/
public List<Produto> getProdutos() {
return produtos;
}
/**
* @param produtos the produtos to set
*/
public void setProdutos(List<Produto> produtos) {
this.produtos = produtos;
}
}
Ai fiz a interface DAO
public interface VendaDao {
public void save(Venda venda);
public Venda getVenda(long id);
public List<Venda> list();
public void remove(Venda venda);
public void update(Venda venda);
}
Implementei em uma classe todos os metodos
public class VendaDaoImp implements VendaDao {
public void save(Venda venda) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.save(venda);
t.commit();
}
public Venda getVenda(long id) {
Session session = HibernateUtil.getSessionFactory().openSession();
return (Venda) session.load(Venda.class, id);
}
public List<Venda> list() {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
List lista = session.createQuery("from Venda").list();
t.commit();
return lista;
}
public void remove(Venda venda) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.delete(venda);
t.commit();
}
public void update(Venda venda) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.update(venda);
t.commit();
}
}
Fiz o controller assim
@ManagedBean
@SessionScoped
public class VendaController {
private Venda venda;
private Cliente cliente;
private DataModel listaVendas;
private ClienteVenda clienteVenda;
public DataModel getListarVendas() {
List<Venda> lista = new VendaDaoImp().list();
listaVendas = new ListDataModel(lista);
return listaVendas;
}
public Venda getVenda() {
if(venda == null){
return new Venda();
} else {
return venda;
}
}
public void setVenda(Venda venda) {
this.venda = venda;
}
public Cliente getCliente() {
if(cliente == null){
return new Cliente();
} else {
return cliente;
}
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public ClienteVenda getClienteVenda() {
if(clienteVenda == null){
return new ClienteVenda();
} else {
return clienteVenda;
}
}
public void setClienteVenda(ClienteVenda clienteVenda) {
this.clienteVenda = clienteVenda;
}
public void prepararAdicionarVenda(){
venda = new Venda();
}
public void prepararAlterarVenda(){
venda = (Venda)(listaVendas.getRowData());
}
public String excluirVenda(){
Venda vendaTemp = (Venda)(listaVendas.getRowData());
VendaDao dao = new VendaDaoImp();
dao.remove(vendaTemp);
return "index";
}
public void adicionarVenda(){
VendaDao dao = new VendaDaoImp();
System.out.println(venda.getCliente());
dao.save(venda);
}
public void alterarVenda(){
VendaDao dao = new VendaDaoImp();
dao.update(venda);
}
}
e o jsf fiz assim:
<h:form prependId="false">
<h:panelGrid id="infosVenda" columns="2" style="margin-bottom:10px">
<h:outputLabel for="cliente" value="Cliente:" />
<h:selectOneMenu value="#{vendaController.cliente.nome}">
<f:selectItems value="#{clienteController.listarClientes}"/>
</h:selectOneMenu>
<h:outputLabel for="produto" value="Produto:" />
<h:selectOneMenu value="#{produtoController.produto.descricao}">
<f:selectItems value="#{produtoController.listarProdutos}"/>
</h:selectOneMenu>
<h:outputLabel for="valor" value="Valor:" />
<h:inputText id="valor" value="#{vendaController.venda.valor}"/>
<p:commandButton update="tabela" oncomplete="dialogGerVenda.hide();" actionListener="#{vendaController.adicionarVenda}" value="Inserir Venda"/>
<p:commandButton update="tabela" oncomplete="dialogGerVenda.hide();" actionListener="#{vendaController.alterarVenda}" value="Alterar Livro"/>
</h:panelGrid>
</h:form>
Ok ao salva nao estou conseguindo pegar o id do cliente e salvar na entidade venda, ele esta salvando como NULL alguem sabe como resolver isso?
Muito Obrigado!