Tenho uma determinada classe cliente. Nesta classe existe o atributo documento que pode ser CNPJ ou CPF. Este documento é declarado por uma interface uma vez que somente em tempo de execução teria a definição.
No banco de dados tenho o campo indicando o numero do documento e um campo indicando se eh pessoa fisica ou juridica ("IDETIPPSA").
O problema: o EntityManager .find sempre retorna o objeto cliente mas sua propriedade documento vem nulo. Se trocar o tipo da propriedade documento de IDocumento para String o mesmo retorna corretamente o numero do documento.
Existe algum erro na anotacao? Ou seria outro problema?
@DiscriminatorColumn(name="IDETIPPSA", discriminatorType = DiscriminatorType.STRING)
public interface IDocumento {
public String getNumero();
public boolean isValido();
}
@Entity
public class Cliente {
@Id
private int id;
private String nome;
private IDocumento documento;
...etc
}
@DiscriminatorValue("J")
public class Cnpj implements IDocumento{
private String numero;
public Cnpj(String numero) {
this.numero = numer;
}
public String getNumero() {
return numero;
}
public boolean isValido() {
.. implementacao do metodo
}
}
@DiscriminatorValue("F")
public class Cpf implements IDocumento{
private String numero;
public Cpf(String numero) {
this.numero = numero;
}
public String getNumero() {
return numero;
}
public boolean isValido() {
.. implementacao do metodo
}
}