я пытаюсь создать составной ключ в спящем режиме, поэтому я начал с
SignatureId. java
@Embeddable
public class SignatureId implements Serializable {
@Column(name = "id_convention")
private int idConvention;
@Column(name = "id_participant")
private int idParticipant;
public SignatureId(int idConvention, int idParticipant) {
this.idConvention = idConvention;
this.idParticipant = idParticipant;
}
public SignatureId(int idConvention) {
this.idConvention = idConvention;
}
public SignatureId() {
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SignatureId that = (SignatureId) o;
return Objects.equals(idConvention, that.idConvention) &&
Objects.equals(idParticipant, that.idParticipant);
}
@Override
public int hashCode() {
return Objects.hash(idConvention, idParticipant);
}
} //getters & setters
А затем применил это в моем Подпись. java
@Entity
@Table(name="signature")
public class Signature {
@EmbeddedId
private SignatureId id;
@ManyToOne
@MapsId("idConvention")
@JoinColumn(name="id_convention", insertable = false, updatable = false, nullable=false)
private Convention convention;
@ManyToOne
@MapsId("idParticipant")
@JoinColumn(name="id_participant", insertable = false, updatable = false, nullable=false)
private Participant participant;
@Column(name="signature_date")
private Date signatureDate;
public Signature(Convention convention, Participant participant) {
this.convention = convention;
this.participant = participant;
this.id = new SignatureId(convention.getIdConvention(), participant.getIdParticipant());
}
public Signature() {
} //getters & setters
Проблема в том, что при создании базы данных отсутствует внешний ключ для id_convention
введите здесь описание изображения
Есть ли решение, чтобы у id_convention и id_participant были как первичный ключ, так и индексный ключ?