Galera estou com uma duvida em um mapeamento 1:1 no Hibernate.
O que eu quero fazer é o seguinte: Ter uma tabela de endereço única, com uma Primary Key própria, dessa forma, uma tabela cliente ou fornecedor ou concessionaria poderá usa-la. A chave primária da tabela endereço vai para outra tabela.
Eu já vi muita gente usando uni-direcional aonde a Primary Key da tabela CLIENTE vai para tabela ENDERECO, eu quero fazer exatamente o contrario.
Tentei fazer com o código abaixo mas não consegui. Como fazer as anotações nesse tipo de relacionamento?
package br.com.ebx.model.bean;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
@Entity
@Table(name = "be_concessionaria")
public class ConcessionariaBean implements Serializable {
private static final long serialVersionUID = -2784198665091509098L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "concessionaria_id")
private Integer id;
@Column(name = "concessionaria_nome", length = 50)
private String nome;
@OneToOne(mappedBy = "endereco")
@JoinColumn(name = "endereco_id")
private EnderecoBean endereco;
@Column(name = "concessionaria_telefone")
private Integer telefone;
@Temporal(TemporalType.DATE)
@Column(name = "concessionaria_data_cadastro")
private Date dataCadastro = new Date();
// METODOS SUPRIMIDOS
}
Endereco.class
package br.com.ebx.model.bean;
import java.io.Serializable;
import javax.persistence.*;
@Entity
@Table(name = "be_endereco")
public class EnderecoBean implements Serializable {
private static final long serialVersionUID = -6263800399080111668L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "endereco_id")
private Integer id;
@Column(name = "endereco_logradouro", length = 70)
private String logradouro;
@Column(name = "endereco_numero", length = 6)
private Integer numero;
@Column(name = "endereco_complemento", length = 40)
private String complemento;
@Column(name = "endereco_cep", length = 8)
private Integer cep;
@Column(name = "endereco_bairro", length = 40)
private String bairro;
@Column(name = "endereco_cidade", length = 40)
private String cidade;
@Column(name = "endereco_uf", length = 2)
private String uf;
// METODOS SUPRIMIDOS
}