Olá,
estou tentando converter DAO para JPA e estou com algumas duvidas
meu problema é como passar o codigo da nota fiscal que gera como auto incremento
no banco para tabela nota fiscal item conforme os fontes abaixo
se alguém puder me ajudar e se estou fazendo certo …
e o que está faltando para funcionar…
---script execucao
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
private int nrnota;
private String dtemissao;
private String dtsaida;
private String nrcnpj;
@OneToMany
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 (cascade=CascadeType.PERSIST)
@JoinColumn(name="nrnota")
private NotaFiscal nota;
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 getNota() {
return nota;
}
public void setNota(NotaFiscal nota) {
this.nota = nota;
}
}
----
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;
}
}
}
--------------
[TopLink Info]: 2008.11.12 10:59:45.749--ServerSession(18055655)--TopLink, version: Oracle TopLink Essentials - 2006.8 (Build 060830)
[TopLink Info]: 2008.11.12 10:59:46.938--ServerSession(18055655)--file:/D:/workspace_patt/Sushibar-pu2 login successful
java.lang.IllegalArgumentException: Object: bar.model.NotaFiscal@7eb6e2 is not a known entity type.
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:3178)
at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist(EntityManagerImpl.java:170)
at bar.persistence.BaseDao1.create(BaseDao1.java:20)
at bar.client.Client1.main(Client1.java:43)