1
resposta

Entidade com duas chaves estrangeiras e uma primária

Olá!

Estou implementando a seguinte modelagem para um sistema de recrutamento e seleção de profissionais:

@Entity
@Table(name = "tbl_usuario")
public class Usuario {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "usu_codigo")
    private Long codigo;

    //(...)
}

@Entity
@Table(name = "tbl_vaga")
public class Vaga {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "vag_codigo")
    private Long codigo;

(...)

@Entity
@Table(name = "tbl_candidatura")
public class Candidatura {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "can_codigo")
    private Long codigo;


    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumn(name = "tbl_vaga_vag_codigo", referencedColumnName = "vag_codigo")
    private Vaga vaga;

    @JoinColumn(name = "tbl_usuario_usu_codigo", referencedColumnName = "usu_codigo")
    private Usuario usuario;

//(...)

Como se vê, a classe Candidatura, além de sua PK (can_codigo) terá duas FKs: uma para vag_codigo, outra para usu_codigo.

Alguém poderia me ajudar quanto à inclusão correta das anotações e respectivos mapeamentos?

1 resposta

Boa tarde Luis, no seu modelo de negócio, uma candidatura tem uma Caga e um Usuario. Assim tem que anota com @ManyToOne e a JPA se encarrega de relacionar as FK, caso queira personalizar o nome da FK, dai usa o @JoinColum passando um name!

Abraços