@PhilAbreu escreveu:
Tenho uma entidade Produto:
@Entity @Table(name = "produto") public class Produto implements Serializable { private static final long serialVersionUID = 1L; private Long id; private Cliente cliente; private String nome; private BigDecimal valor; //getter e setter com anotacoes }
e uma entidade Cliente:
@Entity @Table(name = "cliente") public class Cliente implements Serializable { private static final long serialVersionUID = -195972743343153998L; private Long id; private String nome; private String endereco; //getter e setter com anotacoes
}
e no bean faço:
@ManagedBean @ViewScoped public class CadastroProdutosBean implements Serializable { private static final long serialVersionUID = 1L; private Produto produto = new Produto(); private Cliente cliente = new Cliente( ); private List<Cliente> clientes; //metodo init //nesse metodo recupero uma lista de cliente pra popular uma combo public void prepararCadastro() { EntityManager manager = JpaUtil.getEntityManager(); try { ClientesRepository clientesRepository = new ClientesRepository(manager); this.clientes = clientesRepository.listarTodos(); } finally { manager.close(); } } //aqui de fato faço a persistencia public void salvar() { EntityManager manager = JpaUtil.getEntityManager(); EntityTransaction transaction = manager.getTransaction(); FacesContext context = FacesContext.getCurrentInstance(); try { transaction.begin(); CadastroProdutos cadastroProdutos = new CadastroProdutos(new ProdutosRepository(manager)); cadastroProdutos.salvar(this.produto); CadastroClientes cadastroClientes = new CadastroClientes(new ClientesRepository(manager)); //aqui cai na exception cadastroClientes.salvar(this.cliente); this.produto = new Produto(); this.cliente = new Cliente(); context.addMessage(null, new FacesMessage("Venda cadastrada com sucesso.")); transaction.commit(); } catch (Exception e) { transaction.rollback(); FacesMessage mensagem = new FacesMessage(e.getMessage()); mensagem.setSeverity(FacesMessage.SEVERITY_ERROR); context.addMessage(null, mensagem); } finally { manager.close(); } }
entao no cadastroClientes.salvar da rollback na transação com o erro:
org.hibernate.PropertyValueException: not-null property references a null or transient value : com.br.modelos.Cliente.nome
Quando tento salvar somente o produto, salva normalmente os dados do produto inclusive o cliente_id, mas preciso salvar tambem os dados na tabela de cliente. Onde estou errando?
Mensagens: 4
Participantes: 2