Pessoal tenho a tabela de Atestados que possui Cids
porém na tabela de cid possui uma chave composta com 5 foreigns keys de Atestados (cd_empresa,cd_matricula,dt_atestado,tp_atestado,nr_atestado)
É eu sei... seria muito mais facil ter a Pk de Atestado como FK.... porém não posso alterar o banco....
pesquisei e achei alguns tópicos porém só com chave compostas com Pks
então gostaria que me dessem um help....
Segundo o que eu li eu deveria criar uma classe com as FKS segue exemplo embaixo
e botar um @EmbeddedId private AtestadoFk atestadofk; na classe Cid....
[color=red]Só que como fica o ManyToOne com Atestado ? não consigo entender....[/color]
public class AtestadoFk {
@Column(name = "cd_empresa", nullable = false, length = 6)
private Long codigoEmpresa;
@Column(name = "cd_matricula", nullable = false, length = 10)
private Long codigoMatricula;
@Column(name = "tp_atestado", nullable = false, length = 10)
private Long tipoAtestado;
@Column(name = "dt_atestado", nullable = false)
@Temporal(javax.persistence.TemporalType.DATE)
private Date dataAtestado;
@Column(name = "nr_atestado", nullable = false, length = 11)
private Long numeroAtestado;
}
@Entity
@Table(name = "ATEST_MEDICOS")
@SequenceGenerator(name = "SE__ATESTADO_MEDICO", sequenceName = "SE_ATESTADO_MEDICO")
public class Atestado implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "SE_ATESTADO_MEDICO")
@Column(name = "oid_atestado", nullable = false)
private Long id;
@SuppressWarnings("unchecked")
@OneToMany(targetEntity = Cid.class, cascade = CascadeType.ALL, mappedBy = "atestadoMedico",fetch=FetchType.EAGER)
private Set<Cid> atestadoMedicoCid;
@Column(name = "cd_empresa", nullable = false, length = 6)
private Long codigoEmpresa;
@Column(name = "cd_matricula", nullable = false, length = 10)
private Long codigoMatricula;
@Column(name = "tp_atestado", nullable = false, length = 10)
private Long tipoAtestado;
@Column(name = "dt_atestado", nullable = false)
@Temporal(javax.persistence.TemporalType.DATE)
private Date dataAtestado;
@Column(name = "nr_atestado", nullable = false, length = 11)
private Long numeroAtestado;
@Entity
@Table(name = "ATEST_MEDICOS_CID")
@SequenceGenerator(name = "SE_ATESTADO_MEDICO_CID", sequenceName = "SE_ATESTADO_MEDICO_CID")
public class Cid implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "SE_ATESTADO_MEDICO_CID")
@Column(name = "oid_atestado_cid", nullable = false, length = 5)
private Long id;
@SuppressWarnings("unchecked")
@ManyToOne(targetEntity = Atestado.class, cascade=javax.persistence.CascadeType.ALL,fetch = FetchType.LAZY)
private Atestado atestadoMedico;
@Column(name = "doenca", nullable = false, length = 60)
private String doenca;
@EmbeddedId
private AtestadoFk atestadofk;