我有以下两个类(这有点简化):

@Entity
@Table(name = 'DETAILS')
class Details
{
  // Properties
  @Id @Column(name = 'ID') Integer id
  @Id @Column(name = 'ID2') String secondaryId
  @Id @Column(name = 'FIRST_NAME') String firstName
  @Id @Column(name = 'LAST_NAME') String lastName
  @Id @Column(name = 'CHANGE_TYPE') String changeType
}


@Entity
@Table(name = 'USERS')
class User
{
  // Properties
  @Id @Column(name = 'ID') Integer id
  @Column(name = 'ID2') String secondaryId
  @OneToMany @JoinColumn(name = 'ID') List<Details> details
}

User TABLE包含用户的ID信息,并引用DETAILS表,其中包含有关用户的实际详细信息 . Details类有一个复合键,而User类只有一个键字段,而这个键字段用于连接以获取DETAILS表中的所有列 .

不幸的是,这导致“外键必须具有与引用的主键相同的列数”错误 . 显然我在这里遗漏了一些东西 . 如果我要使用Details类的所有键来连接,那么它将导致一对一映射而不是一对多映射 . 如何设置它以便User类可以包含具有相应ID的所有Details对象?