Duvida com Hiberante - Como passar o valor do ID autoincrement para a lista q vai ser inserida

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.

Vc tentou mudar o GenerationType ? Eu sempre uso como AUTO e não tenho problemas …

@Id @GeneratedValue(strategy=GenerationType.AUTO) private int numero;

Me diz uma coisa q n tem nada haver com o seu problema, pq vc usa um “List” ? o Hibernate insere isso como no BD ?