boa tarde galera, tenho um dúvida e gostaria da ajuda d vcs.
Mapeei as classes utilizando Hibernate conforme descrito abaixo:
@Entity
@Table
@Inheritance(strategy=InheritanceType.JOINED)
public class Pessoa {
@Id
@GeneratedValue
@Column
private Integer id;
@Column
private String nome;
@Column
private String email;
// Getters e Setters aki
}
@Entity
@PrimaryKeyJoinColumn(name=“pessoa”)
public class Cliente extends Pessoa {
@Column
private String cpf;
// Getters e Setters aki
}
@Entity
@PrimaryKeyJoinColumn(name=“pessoa”)
public class Fornecedor extends Pessoa {
@Column
private String cnpj;
// Getters e Setters aki
}
Observem que Pessoa não é classe abstrata, ou seja eu posso gravar informações diretamente na tabela Pessoa.
O que acontece é que eu criei o teste abaixo:
Pessoa pessoa = new Pessoa();
Pessoa.setNome(?Igor Thurler Martins?);
Pessoa.setEmail(?[email removido]?);
E gravei pessoa utilizando session.save(Pessoa);
O resultado foi exatamente o esperado, uma linha na tabela Pessoa
ID NOME EMAIL
1 Igor Thurler Martins [email removido]
Fiz um teste para Cliente e aí que ocorreu o problema
Cliente cliente = new Cliente();
cliente.setNome(?Igor Thurler Martins?);
cliente.setEmail(?[email removido]?);
cliente.setCpf(?012345678901?);
E gravei pessoa utilizando session.save(cliente);
Quando eu executei um select * from Pessoa;
O resultado esperado era:
ID NOME EMAIL
1 Igor Thurler Martins [email removido]
Já que o meu cliente já possuía dados gravados como pessoa, mas o que eu recebi foi:
ID NOME EMAIL
1 Igor Thurler Martins [email removido]
2 Igor Thurler Martins [email removido]
Olhei entaum a tabela de cliente e estava:
ID CPF
2 012345678901
O resultado que eu queria era:
PESSOA
ID NOME EMAIL
1 Igor Thurler Martins [email removido]
CLIENTE
ID CPF
1 012345678901
O que eu fiz de errado???
OBS.: Estou usando mySQL 5.1