Boa noite pessoal, estou com um pequeno problema na hora de mapear uma tabela no meu código Java.
A tabela em questão possui 4 campos, duas Foreign Keys e outros dois campos date comuns, o problema é que a Primary Key desta tabela é composta por essas duas FKs, não estou sabendo exatamente como mapear essa PK no Java, dei uma estudada em @IdClass, fiz do jeito abaixo o mapeamento, mas acredito que não está correto.
O nome da tabela é TBCRNR_CLBR_PRFR_CRNA, os campos que são FK são CD_CLBR e CD_PRFR_CLBR, essas duas FK formam a PK.
Criei uma classe que mapeia as duas FK chamada PreferencesRidePK, com apenas os dois atributos mapeados para essas FKs, e criei um atributo do tipo PreferencesRidePK na classe CollaboratorPreferences, essa classe está mapeada para tabela TBCRNR_CLBR_PRFR_CRNA
import java.sql.Date;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
/**
* Classe CollaboratorPrefenrences mapeada com a colunas da tabela TBCRNR_CLBR_PRFR_CRNA
* @author Luiz Henrique Dias Silva
*
*/
@Entity
@Embeddable
@Table(name="TBCRNR_CLBR_PRFR_CRNA", schema="CARONAEASYADM")
public class CollaboratorPreferences{
@Id
@Column(name="CD_CLBR", columnDefinition = "NUMBER(19,0)")
@NotNull
private PreferencesRidePK PK;
@Column(name="DH_CDTR_BASE", nullable=false)
private Date registerDataTime;
@Column(name="DH_MNTC_BASE", nullable=false)
private Date supportDataTime;
}
import java.io.Serializable;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.GeneratedValue;
import javax.persistence.ManyToOne;
/**
* @author Luiz Henrique
*
*/
public class PreferencesRidePK implements Serializable {
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
@EmbeddedId
@ManyToOne
@GeneratedValue
@Column(name = "CD_CLBR")
private Collaborator collaboratorId;
@EmbeddedId
@ManyToOne
@GeneratedValue
@Column(name = "CD_PRFR_CLBR")
private Preferences preferencesId;
/**
* @return Retorno do atributo collaboratorId
*/
public Collaborator getCollaboratorId() {
return collaboratorId;
}
/**
* @param Set
* do atributo collaboratorId
*/
public void setCollaboratorId(Collaborator collaboratorId) {
this.collaboratorId = collaboratorId;
}
/**
* @return Retorno do atributo preferencesId
*/
public Preferences getPreferencesId() {
return preferencesId;
}
/**
* @param Set
* do atributo preferencesId
*/
public void setPreferencesId(Preferences preferencesId) {
this.preferencesId = preferencesId;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (!(o instanceof PreferencesRidePK))
return false;
PreferencesRidePK that = (PreferencesRidePK) o;
return Objects.equals(getCollaboratorId(), that.getCollaboratorId())
&& Objects.equals(getPreferencesId(), getPreferencesId());
}
@Override
public int hashCode() {
return Objects.hash(getCollaboratorId(), getPreferencesId());
}
}