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;