Ajuda Hibernate com fazer um campo auto incremento passar valor para outro ....automático

Folks,

estou desesperado se alguém puder me ajudar com Hibernate.

Tenho a seguinte situação um objeto (Nota Fiscal)com um atributo auto incremento e vai passar esse campo pra outro objeto(Nota Fiscal Item).

Estou tentado fazer ao incluir pai(Nota Fiscal) depois Nota Fiscal Item mas não da certo pois o valor do atributo fica zerado e da erro pois é pk…

Uma idéia que me deram foi salvar o item em uma Collection ao incluir NOta fiscal tenho o numero e pegar esse numero ler a Collection e gerar Nota Fiscal Item será que só esse jeito que dá pra fazer???

Se alguém puder me ajudar agradeceria pois já estou apanhando uma semana estou convertendo DAO para Hibernate ???

abs

Alo alo Paribe, rapaz, não sei se fui muito simplista na análise, mas vamos lá;

Pelo que entendi, vc tem um relacionamento UM para MUITOS da entidade NF para NFItem correto ? Ou seja, fisicamente, no BD, vc possue uma chave na tabela NFITEM que aponta para a NF, cd_nf por exemplo.

Se foi isso que entendi, o proprio Hibernate soluciona isso, basta vc explicitar vi annotations ou metafile a sua associação, e ao incluir a entidade NF, todos os NFITEM serão inseridos com a chave atribuida a NF.

Abs.

Olá obrigado pelo retorno se puder me ajudar no erro que estou tendo ou estou fazendo errado…

agradeceria …abs



  
[TopLink Info]: 2008.11.14 12:35:42.586--ServerSession(24417480)--TopLink, version: Oracle TopLink Essentials - 2006.8 (Build 060830)   
[TopLink Info]: 2008.11.14 12:35:44.152--ServerSession(24417480)--file:/D:/workspace_patt/Sushibar-pu2 login successful   
[TopLink Warning]: 2008.11.14 12:35:44.376--UnitOfWork(17427094)--java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST.   
javax.persistence.RollbackException: java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST.   
    at oracle.toplink.essentials.internal.ejb.cmp3.transaction.base.EntityTransactionImpl.commit(EntityTransactionImpl.java:109)   
    at oracle.toplink.essentials.internal.ejb.cmp3.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:45)   
    at bar.persistence.BaseDao1.create(BaseDao1.java:21)   
  
  
--   
public class Client1 {   
  
  public static void main(String[] args) throws InterruptedException {   
  
    Collection<NotaFiscalItem> itens= new ArrayList<NotaFiscalItem>();     
    BaseDao1<NotaFiscal> dao = new BaseDao1<NotaFiscal>();   
       
    NotaFiscal n = new NotaFiscal();   
    n.setDtemissao("11/11/2008");   
    n.setDtsaida("11/11/2008");   
    n.setNrcnpj("1234567890");   
       
    NotaFiscalItem i = new NotaFiscalItem();   
    i.setNritemnota(1);   
    i.setCodproduto(10);   
    i.setQtdproduto(100);   
    itens.add(i);   
    i= new NotaFiscalItem();   
    i.setNritemnota(2);   
    i.setCodproduto(20);   
    i.setQtdproduto(500);   
    itens.add(i);   
       
    n.setItens(itens);   
       
         
    dao.create(n);   
  }   
  
}   
---   
  
@Entity   
public class NotaFiscal {   
  
       
    @Id   
    @GeneratedValue(strategy = GenerationType.IDENTITY)   
    private int nrnota;   
    private String dtemissao;   
    private String dtsaida;   
    private String nrcnpj;   
       
    @OneToMany(mappedBy="notaFiscal", fetch = FetchType.LAZY )   
       
    private Collection<NotaFiscalItem> itens;   
    public int getNrnota() {   
        return nrnota;   
    }   
    public void setNrnota(int nrnota) {   
        this.nrnota = nrnota;   
    }   
    public String getDtemissao() {   
        return dtemissao;   
    }   
    public void setDtemissao(String dtemissao) {   
        this.dtemissao = dtemissao;   
    }   
    public String getDtsaida() {   
        return dtsaida;   
    }   
    public void setDtsaida(String dtsaida) {   
        this.dtsaida = dtsaida;   
    }   
    public String getNrcnpj() {   
        return nrcnpj;   
    }   
    public void setNrcnpj(String nrcnpj) {   
        this.nrcnpj = nrcnpj;   
    }   
    public Collection<NotaFiscalItem> getItens() {   
        return itens;   
    }   
    public void setItens(Collection<NotaFiscalItem> itens) {   
        this.itens = itens;   
    }   
           
}   
----   
@Entity   
public class NotaFiscalItem {   
    @Id   
    private int iditem;   
    private int nrnota;   
    private int nritemnota;   
    private int codproduto;   
    private int qtdproduto;   
       
    @ManyToOne(fetch = FetchType.EAGER ,cascade=CascadeType.PERSIST)   
       
    @JoinColumn(name="nrnota",  insertable=true, updatable=true)   
       
    private NotaFiscal notaFiscal;   
       
    public int getNrnota() {   
        return nrnota;   
    }   
    public void setNrnota(int nrnota) {   
        this.nrnota = nrnota;   
    }   
    public int getNritemnota() {   
        return nritemnota;   
    }   
    public void setNritemnota(int nritemnota) {   
        this.nritemnota = nritemnota;   
    }   
    public int getCodproduto() {   
        return codproduto;   
    }   
    public void setCodproduto(int codproduto) {   
        this.codproduto = codproduto;   
    }   
    public int getQtdproduto() {   
        return qtdproduto;   
    }   
    public void setQtdproduto(int qtdproduto) {   
        this.qtdproduto = qtdproduto;   
    }   
    public int getIditem() {   
        return iditem;   
    }   
    public void setIditem(int iditem) {   
        this.iditem = iditem;   
    }   
    public NotaFiscal getNotaFiscal() {   
        return notaFiscal;   
    }   
    public void setNotaFiscal(NotaFiscal notaFiscal) {   
        this.notaFiscal = notaFiscal;   
    }   
       
       
       
  
}   
  
---
public class BaseDao1<T> {
  
  private static EntityManagerFactory emf;
  private EntityManager em;

  public BaseDao1() {
    emf = Persistence.createEntityManagerFactory("pu2");
    em = emf.createEntityManager();
  }

  public boolean create(T obj) {
    em.getTransaction().begin();
    try {
      em.persist(obj);
      em.getTransaction().commit();
      return true;
    }
    catch (Exception e) {
      e.printStackTrace();
      em.getTransaction().rollback();
      return false;
    }
  } 
}