JPA..During synchronization a new object was found through a relationship

Olá ,

não sei se o erro está que a coluna do join entre as duas colunas é a a mesma

nrnota tanto na tabela NotaFiscal e Nota FiscalItem…

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 03:44:26.286--ServerSession(24417480)--TopLink, version: Oracle TopLink Essentials - 2006.8 (Build 060830)
[TopLink Info]: 2008.11.14 03:44:29.197--ServerSession(24417480)--file:/D:/workspace_patt/Sushibar-pu2 login successful
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)
	at bar.client.Client1.main(Client1.java:41)

---
@Entity
public class NotaFiscal {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private int nrnota;
	private String dtemissao;
	private String dtsaida;
    private String nrcnpj;
    
    @OneToMany(mappedBy="notaFiscal")
    private Collection<NotaFiscalItem> itens;
	public int getNrnota() {
		return nrnota;
	}
	public void setNrnota(int nrnota) {
		this.nrnota = nrnota;
	}
	public String getDtemissao() {
		return dtemissao;
	}

---
@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 notaFiscal;
	
	public int getNrnota() {
		return nrnota;
	}

---
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` (
  `nrnota` int(10) unsigned NOT NULL,
  `nritemnota` int(10) unsigned NOT NULL,
  `codproduto` int(10) unsigned NOT NULL,
  `qtdproduto` int(10) unsigned NOT NULL,
  `iditem` int(10) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`iditem`),
  KEY `FK_notafiscalitem_1` (`nrnota`),
  CONSTRAINT `FK_notafiscalitem_1` FOREIGN KEY (`nrnota`) REFERENCES `notafiscal` (`nrnota`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Eai paribe blz?

entao olha essa linha…ela te diz tudo…

During synchronization a new object was found through a relationship that was not marked cascade PERSIST

voce ta tentando salvar o nota ou o item?

Tive problemas parecidos com:
Pessoa -> Pedido.

Persisti pessoa… Busquei no banco, criei o pedido, setei pessoa do banco no pedido e persisti pedido…
Claro q foi POG… masss…
resolve por enquanto!