Como passar o valor do ID gerado para a lista.
Minha classes:
package br.com.sisordcompra.model;
import java.io.Serializable;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@Entity(name = "item")
public class Item {
@Id
@GeneratedValue
private int id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="codproduto")
private Produto produto;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="numeroordem")
private OrdemCompra compra;
private int quantidade;
private double precounitario;
private String empresaDestino;
private String setorDestino;
public Item() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public OrdemCompra getCompra() {
return compra;
}
public void setCompra(OrdemCompra compra) {
this.compra = compra;
}
public int getQuantidade() {
return quantidade;
}
public void setQuantidade(int quantidade) {
this.quantidade = quantidade;
}
public double getPrecounitario() {
return precounitario;
}
public void setPrecounitario(double precounitario) {
this.precounitario = precounitario;
}
public String getEmpresaDestino() {
return empresaDestino;
}
public void setEmpresaDestino(String empresaDestino) {
this.empresaDestino = empresaDestino;
}
public String getSetorDestino() {
return setorDestino;
}
public void setSetorDestino(String setorDestino) {
this.setorDestino = setorDestino;
}
}
package br.com.sisordcompra.model;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class Produto {
@Id
@GeneratedValue
private int codigo;
@OneToMany(mappedBy="produto")
private List<Item> produto;
private String descricao;
private String unidade;
public Produto() { }
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getUnidade() {
return unidade;
}
public void setUnidade(String unidade) {
this.unidade = unidade;
}
}
package br.com.sisordcompra.model;
import java.util.Calendar;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
@Entity
public class OrdemCompra {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int numero;
@ManyToOne
@JoinColumn(name = "codfornecedor")
private Fornecedor codfornecedor;
@OneToMany(cascade= CascadeType.ALL , mappedBy="compra")
private List<Item> listaItens;
private String localEntrega;
private String ipi;
private String frete;
private int prazoEntrega;
private String prazoPagamento;
private Calendar data;
private String status;
private String aprovacao;
private String impresso;
private Calendar dataEntrega;
public OrdemCompra() {
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public Fornecedor getCodfornecedor() {
return codfornecedor;
}
public void setCodfornecedor(Fornecedor codfornecedor) {
this.codfornecedor = codfornecedor;
}
public String getLocalEntrega() {
return localEntrega;
}
public void setLocalEntrega(String localEntrega) {
this.localEntrega = localEntrega;
}
public String getIpi() {
return ipi;
}
public void setIpi(String ipi) {
this.ipi = ipi;
}
public String getFrete() {
return frete;
}
public void setFrete(String frete) {
this.frete = frete;
}
public int getPrazoEntrega() {
return prazoEntrega;
}
public void setPrazoEntrega(int prazoEntrega) {
this.prazoEntrega = prazoEntrega;
}
public String getPrazoPagamento() {
return prazoPagamento;
}
public void setPrazoPagamento(String prazoPagamento) {
this.prazoPagamento = prazoPagamento;
}
public Calendar getData() {
return data;
}
public void setData(Calendar data) {
this.data = data;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getAprovacao() {
return aprovacao;
}
public void setAprovacao(String aprovacao) {
this.aprovacao = aprovacao;
}
public String getImpresso() {
return impresso;
}
public void setImpresso(String impresso) {
this.impresso = impresso;
}
public Calendar getDataEntrega() {
return dataEntrega;
}
public void setDataEntrega(Calendar dataEntrega) {
this.dataEntrega = dataEntrega;
}
public List<Item> getListaItens() {
return listaItens;
}
public void setListaItens(List<Item> listaItens) {
this.listaItens = listaItens;
}
}
O error que me retorna é esse, falando que o codigo da ordemcompra está nulo.
770 [main] INFO org.hibernate.tool.hbm2ddl.TableMetadata - foreign keys: [fk317b1351f2c44e, fk_itemordemcompra_produto1, fk_itemordemcompra_ordemcompra1, fk317b13e17bf7f4]
770 [main] INFO org.hibernate.tool.hbm2ddl.TableMetadata - indexes: [fk317b1351f2c44e, fk_itemordemcompra_produto1, fk_itemordemcompra_ordemcompra1, fk317b13e17bf7f4, primary]
770 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - schema update complete
Hibernate:
insert
into
OrdemCompra
(aprovacao, codfornecedor, data, dataEntrega, frete, impresso, ipi, localEntrega, prazoEntrega, prazoPagamento, status)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
insert
into
item
(numeroordem, empresaDestino, precounitario, codproduto, quantidade, setorDestino)
values
(?, ?, ?, ?, ?, ?)
846 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1048, SQLState: 23000
846 [main] ERROR org.hibernate.util.JDBCExceptionReporter - Column 'numeroordem' cannot be null
Exception in thread "main" org.hibernate.HibernateException: could not insert: [br.com.sisordcompra.model.Item]
at br.com.sisordcompra.dao.OrdemCompraDAO.saveOrUpdate(OrdemCompraDAO.java:24)
at br.com.sisordcompra.controle.OrdemCompraController.saveOrUpdate(OrdemCompraController.java:11)
at br.com.sisordcompra.teste.AdicionarProduto.main(AdicionarProduto.java:50)
alguem poderia me ajudar.