Olá ,
estou tentando converter uns DAOs que tenho no sistema pata JPA
mas não está dando certo…
Via Dao é tão facil de fazer mas via JPA…???
Sei que usei um jeito veio estranho chamando duas vezes create mas já tentei varias vezes e não sei mas o que fazer…
jà tentei varias formas e agora está dando o erro abaixo …
Pois o Pai (NotaFiscal) ao ser gerado vai passar esse nrnota para o filho(NotaFiscalItem)
mas não consigo fazer isso automatico …
alguém poderia me ajudar abs
--
[TopLink Info]: 2008.11.14 05:40:02.451--ServerSession(24417480)--TopLink, version: Oracle TopLink Essentials - 2006.8 (Build 060830)
[TopLink Info]: 2008.11.14 05:40:05.714--ServerSession(24417480)--file:/D:/workspace_patt/Sushibar-pu2 login successful
[TopLink Warning]: 2008.11.14 05:40:06.453--UnitOfWork(26977856)--Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2006.8 (Build 060830)): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Column 'fknrnota' specified twiceError Code: 1110
Call:INSERT INTO NOTAFISCALITEM (FKNRNOTA, CODPRODUTO, QTDPRODUTO, NRITEMNOTA, fknrnota) VALUES (?, ?, ?, ?, ?)
bind => [0, 10, 100, 1, null]
Query:InsertObjectQuery(bar.model.NotaFiscalItem@1758500)
--
DROP TABLE IF EXISTS `loja`.`notafiscal`;
CREATE TABLE `loja`.`notafiscal` (
`nrnota` int(10) unsigned NOT NULL auto_increment,
`dtemissao` varchar(10) NOT NULL,
`dtsaida` varchar(10) NOT NULL,
`nrcnpj` varchar(45) NOT NULL,
PRIMARY KEY (`nrnota`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `loja`.`notafiscalitem`;
CREATE TABLE `loja`.`notafiscalitem` (
`fknrnota` int(10) unsigned NOT NULL,
`nritemnota` int(10) unsigned NOT NULL,
`codproduto` int(10) unsigned NOT NULL,
`qtdproduto` int(10) unsigned NOT NULL,
PRIMARY KEY USING BTREE (`fknrnota`),
CONSTRAINT `FK_notafiscalitem_1` FOREIGN KEY (`fknrnota`) REFERENCES `notafiscal` (`nrnota`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
---
@Entity
public class NotaFiscalItem {
@Id
//private int iditem;
private int fknrnota;
private int nritemnota;
private int codproduto;
private int qtdproduto;
@ManyToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name="fknrnota")
private NotaFiscal notaFiscal;
public int getFknrnota() {
return fknrnota;
}
public void setFknrnota(int fknrnota) {
this.fknrnota = fknrnota;
}
public int getNritemnota() {
return nritemnota;
}
public void setNritemnota(int nritemnota) {
this.nritemnota = nritemnota;
}
public int getCodproduto() {
return codproduto;
}
--
@Entity
public class NotaFiscalItem {
@Id
private int fknrnota;
private int nritemnota;
private int codproduto;
private int qtdproduto;
//@ManyToOne(fetch = FetchType.EAGER ,cascade=CascadeType.PERSIST)
@ManyToOne
@JoinColumn(name="fknrnota")
private NotaFiscal notaFiscal;
--
public class Client1 {
public static void main(String[] args) throws InterruptedException {
Collection<NotaFiscalItem> itens= new ArrayList<NotaFiscalItem>();
BaseDao1<NotaFiscal> dao = new BaseDao1<NotaFiscal>();
BaseDao1<NotaFiscalItem> dao1 = new BaseDao1<NotaFiscalItem>();
NotaFiscal n = new NotaFiscal();
n.setDtemissao("12/11/2008");
n.setDtsaida("13/11/2008");
n.setNrcnpj("[telefone removido]");
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);
//gera Nota Fiscal
dao.create(n);
System.out.println("Nota = "+n.getNrnota());
//gera Nota Fiscal Item
i.setFknrnota(n.getNrnota());
dao1.create(i);
System.out.println("Nota Item= "+n.getNrnota());
}