EnrollmentPK (Embeddable)

Entidade

Criaremos um subpacote em entidades chamado PK, com a classe EnrollmentPK. Ela terá duas referências: para o User e Offer.

Lembrar de implementar Getter and Setter. O equals&hashCode será comparado as DUAS classes para verificar a matrícula.

@Embeddable
public class EnrollmentPK {

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user;

    @ManyToOne
    @JoinColumn(name = "offer_id")
    private Offer offer;
    
    //construtor vazio e com argumentos + getters and setters
    //equals&hashcode será comparado entre User e Offer para verificar
    //a matrícula

Precisamos passar o @Embeddable na classe pois ela irá definir atributos de outra classe.

Quando temos uma classe que subdivide atributos de outra, passamos essa anotação. ❗Na classe Enrollment, passaremos o @EmbeddedId.

Atualizado