DAO X JPA ..AJuda?

0 respostas
P

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());
    
  }
Criado 14 de novembro de 2008
Respostas 0
Participantes 1