InheritanceType.JOINED

1 resposta
G

Boa tarde pessoal!

Tenho o seguinte estrutura de tabelas e classes:

Tabelas:

Pessoa
-cpf_cnpj,
-nome,
-endereco
… /outros campos/

Cliente
-cpf_cnpj, /* pk e fk */
… /dados de cliente/

Fornecedor
-cpf_cnpj, /* pk e fk */
… /dados de fornecedor/

Classes:

@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Pessoa implements Serializable {
    @Id
    @Column(name = "CPF_CNPJ", nullable = false)
    protected String cpfCnpj;
    ... /*restantes dos campos omitidos*/
}

@Entity
public class Cliente extends Pessoa implements Serializable {
    ... /*campos de Cliente omitidos*/
}

@Entity
@Table(name = "FORNECEDOR")
public class Fornecedor extends Pessoa implements Serializable {
   ... /*campos de Fornecedor omitidos*/
}

Funciona tudo ótimo até quando tento inserir um cliente que já é fornecedor ou o inverso,
Caused by: java.sql.BatchUpdateException: Duplicate entry ‘[CPF removido]’ for key 1
obviamente causado por uma tentativa de gravar um registro duplicado.
Estou utilizando o método merge() passando pra ele um objeto do tipo Cliente ou Fornecedor.
O que devo utilizar pra que o registro seja gravado?

Obrigado!

1 Resposta

ddark.emanu

conseguiu Resolver ?

Criado 3 de novembro de 2007
Ultima resposta 10 de jan. de 2012
Respostas 1
Participantes 2