Estou com uma duvida aqui em JPA, tive lendo e vi que para se fazer uma PK composta teriamos de criar uma classe com a anotação @Embedded onde nessa classe teria os campos/propriedades que fazem parte da chave composta
por exemplo: Classe Unidade Operacional, possui como chaves primarias o idCidade, idUnidadeOperacional,idUnidadeAdministrativa
@Embedded
public class UnidadeOperacionalPK implementes Serializable {
@Column(name="CDUOR")
private Integer idUnidadeOperacional;
@Column(name="CDADMIN")
private Integer idUnidadeAdministrativa;
@Column(name="CDCIDADE")
private Integer idCidade;
public UnidadeOperacionalPK() {}
public UnidadeOperacionalPK(Integer idUnidadeOp, Integer idUnidadeAdmin,Integer idCidade {
this.idUnidadeOperacional = idUnidadeOp;
// .... o mesmo com os demais
}
// gets e sets
}
@Entity
public class UnidadeOperacional implementes Serizalizable {
@EmbeddedId
private UnidadeOperacionalPK unidadeOperacionalPK;
// demais campos
// gets e sets
}
Ate ae beleza, ae eu pergunto se UnidadeOperacional se relaciona com a classe Previsao por exemplo, que tem como PK todos os campos de UnidadeOperacional + um campo de Data = dataPrevisao, como eu deveria fazer ?
criaria um PrevisaoPK que iria receber tudo isso, ou colocaria o um UnidadeOperacionalPK + um DataPrevisao com a anotação @Id, isso ´epossivel ? como devo fazer nesses casos ?
E se Previsao recebesse uma outra classe que formaria a sua PK, como deveria ser feito.
@EmbeddedId
UnidadeOperacionalPK unidadeOperacionalPK;
@Id
@Temporal(TemporalType.DATE)
Date dataPrevisao;