У меня есть следующая структура таблицы
ID:detail_id event_id:event_id
Detail -------------> Association -----------------> Event
------ ----------- -----------
ID(PK) detail_id (PK)(FK) event_id (PK)
event_id (PK)(FK)
Отображение между таблицей сведений и таблицей ассоциации - "многие к одному". Сопоставление между таблицей ассоциации и таблицей событий от многих к одному.
Detail table:
@Table(name = "Detail")
class Detail{
private Association association;
@MapsId("detailId")
@manytoone
@JoinColumn(name = "ID", referencedColumn="detail_id")
public Association getAssociation(){
return association
}
//setter
}
Класс AssociationID - для составного ключа
@Embeddable
class AssociationID implements Serializable{
private Long detailId;
private Long eventId;
@column(name = "detail_id")
public Long getDetailId(){
return detailId;
}
@column(name = "event_id")
public Long getEventId(){
return eventId;
}
}
@Table(name="Association")
class Association{
private AssociationID associationId;
private Event event;
private Set<Detail> detailCollection;
@EmbeddedId
public AssociationID getAssociationId(){
return associationId;
}
@MapsId("eventId")
@ManyToOne
@JoinColumn(name="eventId", referencedColumnName="event_id")
public Event getEvent(){
return event;
}
@OneToMany(mappedBy="association")
public Set<FundDetail> getFundDetail(){
return detailCollection;
}
}
@Table(name="Event")
class Event{
private long eventId
@OneToMany(mappedby="event")
private Association association;
}
Я получаю ошибку - referencedColumnNames (detail_id) файла detail.association, ссылающегося на ассоциацию не сопоставлены ни с одним свойством. Это потому, что я просто отображаю detailId, а не eventId в составном ключе? Если это так, то проблема в том, что eventId ссылается на другую таблицу (Event), и его нет в таблице Detail. Поэтому, пожалуйста, дайте мне знать, как связать поля в составном ключе, если он ссылается на две разные таблицы.