Subject Error relationship one to many
Author STI Fábrica de Software
Dear Roman!
I have the following problem when using JPA (toplink)/Jaybird with a
relationship one to many, below the sources and error:

Call the method:
EmpresaFacadeRemote empresa = (EmpresaFacadeRemote)
ic.lookup("br.eti.stifabricasw.sgrep.beans.EmpresaFacadeRemote");
empresa.createEmpresa(jtfRasaoSocial.getText(),
jtfNomeFantasia.getText(), jtfCpfCnpj.getText(),
jtfRgInscEstadual.getText());
empresa.addMeioContato(meiosContatoList);

SessionBeans:

package br.eti.stifabricasw.sgrep.beans;

import br.eti.stifabricasw.sgrep.entidades.MeioContato;
import br.eti.stifabricasw.sgrep.entidades.Pessoa;
import java.util.List;
import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;

/**
*
* @author kurumin
*/
@Stateful
public class EmpresaFacade implements EmpresaFacadeRemote {
@PersistenceContext(type=PersistenceContextType.TRANSACTION)
private EntityManager em;

public Pessoa createEmpresa(String rasaoSocial, String nomeFantasia,
String cnpj, String inscricaiEstadual) {
this.empresa = new Pessoa(rasaoSocial, nomeFantasia, cnpj,
inscricaiEstadual,"EM",'J');
em.persist(empresa);
return empresa;
}

public Pessoa createEmpresa(Pessoa empresa, List<MeioContato>
meiosContatoList) {
this.empresa = empresa;
empresa.setMeioContatoCollection(meiosContatoList);
em.persist(empresa);
return empresa;
}

public void addMeioContato(List<MeioContato> meiosContatoList) {
this.empresa.setMeioContatoCollection(meiosContatoList);
em.merge(empresa);
}

private Pessoa empresa;

}


Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b04-fcs
(04/11/2008))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: org.firebirdsql.jdbc.FBSQLException: GDS Exception.
335544665. violation of PRIMARY or UNIQUE KEY constraint "UNQ_PESSOA_CPF" on
table "PESSOA"
Error Code: 335544665
Call: INSERT INTO PESSOA (CODIGO, UF, FOTO_LOGOMARCA, APELIDO, TIPO,
RG_INSCRICAO, TIPO_PESSOA, NOME, DATA_CADASTRO, ORGAO_EXPEDIDOR, OBSERVACAO,
CPF_CNPJ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
bind => [null, null, null, kjkjk, EM, jkjljlj, J, julkjlkjl, null,
null, null, jkjkj222]


Another way to call the method:

EmpresaFacadeRemote empresa = (EmpresaFacadeRemote)
ic.lookup("br.eti.stifabricasw.sgrep.beans.EmpresaFacadeRemote");
private Pessoa entidadePessoa = new Pessoa(jtfRasaoSocial.getText(),
jtfNomeFantasia.getText(), jtfCpfCnpj.getText(),
jtfRgInscEstadual.getText(),"EM",'J');
empresa.createEmpresa(entidadePessoa,meiosContatoList);

Local Exception Stack:
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b04-fcs
(04/11/2008))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: org.firebirdsql.jdbc.FBSQLException: GDS Exception.
335544347. validation error for column PESSOA_CODG, value "*** null ***"
Error Code: 335544347
Call: INSERT INTO MEIO_CONTATO (DESCRICAO, RESPONSAVEL, TIPO, SETOR,
MEIO_CONTATO, PESSOA_CODG) VALUES (?, ?, ?, ?, ?, ?)
bind => [(74)3611-3308), João da Silva, Residêncial, Compras,
Residêncial, null]
Query:
InsertObjectQuery(br.eti.stifabricasw.sgrep.entidades.MeioContato[descricao=(74)3611-3308)])

--
~~~~^^~~~~^^~~~~^^~~~~
Jean Carlos
^^^^~~^^^^~~^^^^~~^^^^~~


[Non-text portions of this message have been removed]