Problemas com herança utilizando InheritanceType.JOINED com JPA+EJB+Facade+PostgreSQL

Boa noite pessoal estou com o seguinte erro ocorrendo na hora de inserir dados utilizando herança com InheritanceType.JOINED onde tenho a Classe Pessoa que herda para as classes filha Cliente e Inadimplente o erro ocorre na classe Cliente porque a classe Inadimplente ainda não fiz, onde na classe Pessoa crio um atributo codpes chave primaria e na classe Cliente quero criar atributo codcli chave primaria e atributo codpes chave estrangeira ligando com a classe Cliente, esta ocrrendo o seguinte erro:
[EL Warning]: 2011-09-27 23:06:03.52–UnitOfWork(1908246931)–Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: ERRO: coluna “codpes” é do tipo integer mas expressão é do tipo character varying
Error Code: 0
Call: INSERT INTO public.pessoa (codpes, dddrespes, complpes, fonecelpes, ufpes, dddcelpes, rgpes, cnpjpes, nomepes, obspes, bairropes, cidpes, ceppes, emailpes, cpfpes, endpes, fonerespes) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
bind => [Cliente, 543, jjhgjhjg, 21332132, AM, 213, 6654564, , Teste11, fgmjnfg, hhhjgjhgjh, ljkgjgjgjhgj, 86546574645, kjhkjdhkhsc@dsjhcchj, 45645456465, hcghjsdgcvhj, 31132123]
Query: InsertObjectQuery(sistema_cobrancas.negocios.to.Cliente@2b54ae5a)
Exception occurred during event dispatching:
java.lang.IllegalStateException:
Exception Description: No transaction is currently active
at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.rollback(EntityTransactionImpl.java:122)
at sistema_cobrancas.integracao.dao.pstentity.ClientePST.inserirCliente(ClientePST.java:67)
at sistema_cobrancas.negocios.bo.ClienteBO.inserirCliente(ClienteBO.java:45)
at sistema_cobrancas.negocios.bd.ClienteBD.inserirCliente(ClienteBD.java:62)
at sistema_cobrancas.apresentacao.ctr.SistemaCobrancaCTRFacade.inserirCliente(SistemaCobrancaCTRFacade.java:63)
at sistema_cobrancas.apresentacao.gui.ClienteGUI.handlerCliente(ClienteGUI.java:883)
at sistema_cobrancas.apresentacao.gui.ClienteGUI.actionPerformed(ClienteGUI.java:687)
at sistema_cobrancas.apresentacao.gui.ClienteGUI.access$600(ClienteGUI.java:20)
at sistema_cobrancas.apresentacao.gui.ClienteGUI$8.actionPerformed(ClienteGUI.java:633)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6288)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6053)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4651)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at java.awt.Component.show(Component.java:1584)
at java.awt.Component.setVisible(Component.java:1536)
at java.awt.Window.setVisible(Window.java:842)
at java.awt.Dialog.setVisible(Dialog.java:986)
at sistema_cobrancas.apresentacao.gui.MenuFacade.getTelaCliente(MenuFacade.java:14)
at sistema_cobrancas.apresentacao.gui.SistemaCobrancaPrincipal.actionPerformed(SistemaCobrancaPrincipal.java:456)
at sistema_cobrancas.apresentacao.gui.SistemaCobrancaPrincipal.access$000(SistemaCobrancaPrincipal.java:12)
at sistema_cobrancas.apresentacao.gui.SistemaCobrancaPrincipal$1.actionPerformed(SistemaCobrancaPrincipal.java:130)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6288)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6053)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4651)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

Minhas Entity:
Entity da classe Pessoa:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name=“codpes”)
@Table(name = “pessoa”,schema=“public”)
@NamedQueries({
@NamedQuery(name = “Pessoa.buscaCodpessoa”, query = “SELECT p FROM Pessoa p WHERE p.codpes = :codpes”),
@NamedQuery(name = “Pessoa.buscaNomepessoa”, query = “SELECT p FROM Pessoa p WHERE p.nomepes = :nomepes”)
})

public class Pessoa implements Serializable{

@Id
@SequenceGenerator(name = “PESSOA_SEQUENCIA”, sequenceName = “PESSOA_SEQUENCIA”, allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “PESSOA_SEQUENCIA”)
@Column(name = “codpes”, nullable = false)
private Integer codpes;
@Column(name = “nomepes”, nullable = false)
private String nomepes;
@Column(name = “cnpjpes”, nullable = false)
private String cnpj;
@Column(name = “cpfpes”, nullable = false)
private String cpf;
@Column(name = “rgpes”, nullable = false)
private String rg;
@Column(name = “endpes”, nullable = false)
private String endereco;
@Column(name = “bairropes”, nullable = false)
private String bairro;
@Column(name = “cidpes”, nullable = false)
private String cidade;
@Column(name = “ufpes”, nullable = false)
private String uf;
@Column(name = “ceppes”, nullable = false)
private String cep;
@Column(name = “complpes”, nullable = false)
private String complemento;
@Column(name = “fonecelpes”, nullable = false)
private Integer fone_celular;
@Column(name = “dddcelpes”, nullable = false)
private Integer ddd_celular;
@Column(name = “fonerespes”, nullable = false)
private Integer fone_residencial;
@Column(name = “dddrespes”, nullable = false)
private Integer ddd_residencial;
@Column(name = “obspes”, nullable = false)
private String obs;
@Column(name = “emailpes”, nullable = false)
private String email;

public Pessoa(){
}



public Pessoa(String nome, String cnpj, String cpf, String rg, String endereco, String bairro, String cidade, String uf,
              String cep, String complemento, String fone_celular, String ddd_celular, String fone_residencial,
              String ddd_residencial, String obs, String email,Integer codpes){//throws Exception{

    this.codpes = codpes;
    this.nomepes = nome;
    this.cnpj = cnpj;
    this.cpf = cpf;
    this.rg = rg;
    this.endereco = endereco;
    this.bairro = bairro;
    this.cidade = cidade;
    this.uf = uf;
    this.cep = cep;
    this.complemento = complemento;
    this.fone_celular = (Integer.parseInt(fone_celular));
    this.ddd_celular = (Integer.parseInt(ddd_celular));
    this.fone_residencial = (Integer.parseInt(fone_residencial));
    this.ddd_residencial = (Integer.parseInt(ddd_residencial));
    this.obs = obs;
    this.email = email;
}

public Integer getCodPessoa() {
return codpes;

}

public void setCodPessoa(Integer codpes) {
this.codpes = codpes;
}

public void setNome(String nomepes){
    this.nomepes = nomepes;
}
public String getNome(){
    return nomepes;
}

public void setCnpj(String cnpj){
    this.cnpj = cnpj;
}

public String getCnpj(){
    return cnpj;
}

public void setCpf(String cpf){
  this.cpf = cpf;
}



public String getCpf(){
    return cpf;
}

public void setRg(String rg){
    this.rg = rg;
}
public String getRg(){
    return rg;
}

public void setEndereco(String endereco){
    this.endereco = endereco;
}
public String getEndereco(){
    return endereco;
}

public void setBairro(String bairro){
    this.bairro = bairro;
}
public String getBairro(){
    return bairro;
}

public void setCidade(String cidade){
    this.cidade = cidade;
}
public String getCidade(){
    return cidade;
}

public void setUf(String uf){
    this.uf = uf;
}
public String getUf(){
    return uf;
}

public void setCep(String cep){//throws Exception{
    /*if (cep == null || cep.trim().length() == 0){
        throw new Exception("O Cep não pode conter valor vazio!");
    }*/
    this.cep = cep;
}
public String getCep(){
    return cep;
}

public void setComplemento(String complemento){
    this.complemento = complemento;
}
public String getComplemento(){
    return complemento;
}

public void setFone_Celular(Integer fone_celular){
    
    this.fone_celular = fone_celular;
}
public Integer getFone_Celular(){
    return fone_celular;
}

 public void setDdd_Celular(Integer ddd_celular){
   
    this.ddd_celular = ddd_celular;
}
 public Integer getDdd_Celular(){
     return ddd_celular;
 }

 public void setFone_Residencial(Integer fone_residencial){
   
    this.fone_residencial = fone_residencial;
}
 public Integer getFone_Residencial(){
     return fone_residencial;
 }

 public void setDdd_Residencial(Integer ddd_residencial){
    
    this.ddd_residencial = ddd_residencial;
}
 public Integer getDdd_Residencial(){
     return ddd_residencial;
 }

 public void setObs(String obs){
    this.obs = obs;
 }
 public String getObs(){
     return obs;
 }

 public void setEmail(String email){
	this.email = email;
 }
 public String getEmail(){
     return email;
 }

}

===========================================================================
Entity Classe Cliente:

@Entity
@PrimaryKeyJoinColumn(name=“codpes”)
@Table(name = “cliente”,schema=“public”)
@NamedQueries({
@NamedQuery(name = “Cliente.buscaCodCliente”,
query = “SELECT c FROM Cliente c WHERE c.codpes = :codpes”)
})

public class Cliente extends Pessoa implements Serializable{

@SequenceGenerator(name = “CLIENTE_SEQUENCIA”, sequenceName = “CLIENTE_SEQUENCIA”, allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “CLIENTE_SEQUENCIA”)
@Column(name = “codcli”, nullable = false)
private int codcli;

@Column(name = “codconta”, nullable = false)
private int codconta;

@Column(name = “fonecomcli”, nullable = false)
private Integer fone_comercial;
@Column(name = “dddcomcli”, nullable = false)
private Integer ddd_comercial;
@Column(name = “ramalcomcli”, nullable = false)
private Integer ramal;
@Column(name = “faxcomcli”, nullable = false)
private Integer fax;
@Column(name = “juromescli”, nullable = false)
private Double juro_mes;
@Column(name = “honorariocli”, nullable = false)
private Double honorario;
@Column(name = “multacli”, nullable = false)
private Double multa;
@Column(name = “nomeconcli”, nullable = false)
private String nome_contato;

public Cliente(){
    conta = new Conta();

}


public Cliente(String nome, String cnpj, String cpf, String rg, String endereco, String bairro, String cidade, String uf,
              String cep, String complemento, String fone_celular, String ddd_celular, String fone_residencial,
              String ddd_residencial, String obs, String email,Integer codigo, String fone_comercial,
              String ddd_comercial, String ramal, String fax, String juro_mes, String honorario, String multa, String nome_contato, String codbanco,
              String num_agencia, String num_conta){ // , Pessoa pes   throws Exception {

    super(nome, cnpj, cpf, rg, endereco, bairro, cidade, uf, cep, complemento, fone_celular, ddd_celular,
          fone_residencial, ddd_residencial, obs, email,codigo);

    this.fone_comercial = (Integer.parseInt(fone_comercial));
    this.ddd_comercial = (Integer.parseInt(ddd_comercial));
    this.ramal = (Integer.parseInt(ramal));
    this.fax = (Integer.parseInt(fax));
    this.juro_mes = (Double.parseDouble(juro_mes));
    this.honorario = (Double.parseDouble(honorario));
    this.multa = (Double.parseDouble(multa));
    this.nome_contato = nome_contato;

    setBanco(new Banco(codbanco));

    setConta(new Conta(num_agencia, num_conta));
}

public void setCodCli(int codigo){
    this.codcli = codigo;
    
}
public int getCodCli(){
    return codcli;
}

public void setCodConta(int codconta){
    this.codconta = codconta;

}
public int getCodConta(){
    return codconta;
}

public void setFone_Comercial(Integer fone_comercial){
    this.fone_comercial = fone_comercial;
}
public Integer getFone_Comercial(){
    return fone_comercial;
}

public void setDdd_Comercial(Integer ddd_comercial){
    this.ddd_comercial = ddd_comercial;
}
public Integer getDdd_Comercial(){
    return ddd_comercial;
}

public void setRamal(Integer ramal){
    this.ramal = ramal;
}
public Integer getRamal(){
    return ramal;
}

public void setFax(Integer fax){
    this.fax = fax;
}
public Integer getFax(){
    return fax;
}

public void setJuro_Mes(Double juro_mes){
    this.juro_mes = juro_mes;
}
public Double getJuro_Mes(){
    return juro_mes;
}

public void setHonorario(Double honorario){
    this.honorario = honorario;
}
public Double getHonorario(){
    return honorario;
}

public void setMulta(Double multa){
    this.multa = multa;
}
public Double getMulta(){
    return multa;
}

public void setNome_Contato(String nome_contato){
    this.nome_contato = nome_contato;
}
public String getNome_Contato(){
    return nome_contato;
}

public Banco getBanco() {
   return codbanco;
}

public void setBanco(Banco codbanco) {
   this.codbanco = codbanco;
}

public Conta getConta() {
   return conta;
}

public void setConta(Conta conta) {
   this.conta = conta;
}

}

Desde ja Obrigado a t +

Tenta ver no sql gerado antes da stack trace se a sequence foi criada, está parecendo que foi passado como null.

Aparece com valores ja herdados da classe Pessoa para a classe Cliente mais na hora de fazer o comit ocorre esse erro, sera que não precisaria passar nenhum Integer codpes porque ele gera automaticamente no banco com o Generator na classe Pessoa e teria que gravar no codpes Chave estrangeira da classe Cliente.

Boa noite Xelasales,

Cara, eu uso esse tipo de herança em três entidades e eu uso o @DiscriminatorValue(Value=X) nas entidades
"filhas".

Ex.:

[code]@Entity
@Table(name = “conta”)
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name=“pjpf”, discriminatorType=DiscriminatorType.STRING, length=2)
@DiscriminatorValue(value=“C”) //“C” é o valor padrão para a entidade sozinha, pois a uso para outras “contas”.
public class Conta implements Serializable

@Entity
@Table(name = “conta_pessoa_juridica”)
@DiscriminatorValue(value=“PJ”)
public class PessoaJuridica extends Conta implements Serializable {
[/code]

Pra esse tipo de relação (Joined) vc precisa fazer algo assim.

Falew.