我有以下两个类(这有点简化):
@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 对象?