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!