Hibernate复合键与来自不同表的外来引用

Hibernate复合键与来自不同表的外来引用,hibernate,composite-primary-key,Hibernate,Composite Primary Key,我有下面的表结构 ID:detail_id event_id:event_id Detail -------------> Association -----------------> Event ------ ----------- ----------- ID(PK) detail_id (PK)(FK)

我有下面的表结构

         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;
}
@可嵌入
类AssociationID实现可序列化{
私有长细节ID;
私人长事件ID;
@列(name=“detail\u id”)
公共长getDetailId(){
返回detailId;
}
@列(name=“event\u id”)
公共长getEventId(){
返回事件ID;
}
}
@表(name=“关联”)
阶级协会{
私人AssociationID AssociationID;
私人活动;
私人收藏;
@嵌入ID
公共AssociationID getAssociationId(){
返回关联ID;
}
@MapsId(“事件ID”)
@许多酮
@JoinColumn(name=“eventId”,referencedColumnName=“event\u id”)
公共事件getEvent(){
返回事件;
}
@OneToMany(mappedBy=“协会”)
公共集getFundDetail(){
退货和收款;
}
}
@表(name=“事件”)
班级活动{
私有长事件ID
@OneToMany(mappedby=“事件”)
私人协会;
}

我获取了detail.association的错误-referencedColumnNames(detail\u id),该关联引用未映射到单个属性的关联。是不是因为我只是在复合键中映射detailId而不是eventId?如果是这样的话,问题是eventId引用了另一个表(Event),而它不在Detail表中。因此,如果复合键引用了两个不同的表,请告诉我如何关联复合键中的字段。

请提供一个可复制的示例。此外,问题在哪里?问题就在图片下方。如何使用来自两个不同表的外部引用处理复合键,我得到的hibernate错误没有用上面的代码映射为单个属性。您的问题是什么?解释图表上的箭头及其编号。为什么两个箭头都指向右边?您是什么意思,“在关联表中是否有一个复合键,它包含来自两个不同表的外部引用”?您是在询问图表、代码还是什么?“如何处理”是毫无帮助的含糊不清。(请谈论FKs引用(PK/唯一),而不是from或to,因为我们不知道其中哪一个表示引用您。)请更清楚。给出一个剪切、粘贴和运行的例子来说明你的问题,把你的代码变成一个例子。什么错误消息?请通过编辑澄清,而不是评论。谢谢评论。我已经编辑并添加了更多细节。