Olá a todos,
Estou enfrentando um dilema, cada um resolve de uma maneira mas até agora nenhum eficiente.
O cenário é o seguinte:
Tenho um cadastro de empresa, onde tenho endereco , cidades e estado.
Empresa --> Endereco --> Estados --> Cidades.
Estou tentando fazer esse relacionamento, lembrando que a tabela cidade e estado são estáticas.
Empresa.java
@Entity
@Table(name = "EMPRESA")
@SuppressWarnings("serial")
public class Empresa implements Serializable {
/** Id da empresa */
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
/** Classe com os parametros do Endereço */
@OneToOne(optional = true)
@PrimaryKeyJoinColumn(name = "empresa_idEmpresa", referencedColumnName="idEmpresa")
private Endereco endereco;
Endereco.java
@Entity
@Table(name = "ENDERECO")
@SuppressWarnings("serial")
public class Endereco implements Serializable {
/** ID do endereco da empresa, psicologo e usuario */
@Id
@Column(name = "ENDERECO_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@OneToOne(mappedBy = "endereco")
@PrimaryKeyJoinColumn(name = "idEmpresa", referencedColumnName = "empresa_idEmpresa")
private Empresa empresa;
@OneToOne(mappedBy = "endereco")
@PrimaryKeyJoinColumn(name = "idEstado", referencedColumnName = "estado_idEstado")
private Estado estado;
Estado.java
@SuppressWarnings("serial")
@Embeddable
@Table(name = "ESTADO")
public class Estado implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
private Cidade cidade;
/** Classe com os parametros do Endereço */
@OneToOne(optional = true)
@PrimaryKeyJoinColumn(name = "estado_idEstado", referencedColumnName="idEstado")
private Endereco endereco;
Cidade.java
@Embeddable
@Table(name = "CIDADE")
@SuppressWarnings("serial")
public class Cidade implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(mappedBy = "cidade")
private List<Estado> estados;
AGRADEÇO DESDE JÁ TODAS AS AJUDAS.
Muito Obrigado