Tenho duas classes
@Entity (name="Pessoa")
@SequenceGenerator(
name="pessoaSeq",
sequenceName="sq_pss_id"
)
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="tpo_pessoa", discriminatorType=DiscriminatorType.STRING, length=1)
@Table (name="pessoa")
public abstract class Pessoa implements Serializable {
@Id @GeneratedValue(strategy=GenerationType.AUTO, generator="pessoaSeq" )
private Integer id;
private int versao;
private String nome;
private Situacao situacao;
@Entity (name="PessoaFisica")
@DiscriminatorValue("F")
public class PessoaFisica extends Pessoa{
private Sexo sexo;
private EstadoCivil estadoCivil;
private Date dataNascimento;
@Entity (name="Usuario")
@Inheritance(strategy=InheritanceType.JOINED)
@Table (name="seg_usuario")
public class Usuario implements Serializable{
@Id
private Integer id;
private String nomeLogin;
private String senha;
private Situacao situacao;
@OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
private PessoaFisica pessoaFisica;
public class Teste {
public static void main(String[] args) {
System.out.println("iniciando...");
Session session = HibernateUtil.getSession();
System.out.println("Finalizando...");
session.beginTransaction();
PessoaFisica pf = new PessoaFisica();
pf.setNome("jukinha");
pf.setCpf("[telefone removido]");
Usuario u = new Usuario();
u.setNomeLogin("jukinha");
u.setSuperUsuario(true);
u.setSenha("teste");
u.setSituacao(Situacao.ATIVO);
u.setPessoaFisica(pf);
//session.save(pf);
session.saveOrUpdate(u);
session.getTransaction().commit();
System.out.println("Salvou...");
Eu preciso compartilhar a chave primária da tabela pessoa ( PessoaFisica ) com a tabela usuario, mas dá o seguinte erro:
[b]
ids for this class must be manually assigned before calling save(): Usuario
[/b]
Se eu fosse mapear pela forma tradicional ficaria assim não é?
<class name="Usuario" table="usuario">
<id name="id" type="int">
<generator class="foreign">
<param name="property">pessoaFisica</param>
</generator>
</id>
Porém não sei como mapear com Annotations.
Alguém poderia me ajudar :?:
