Составной ключ Hibernate с ссылками из другой таблицы - PullRequest
0 голосов
/ 04 марта 2020

У меня есть следующая структура таблицы

         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. Поэтому, пожалуйста, дайте мне знать, как связать поля в составном ключе, если он ссылается на две разные таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...