【发布时间】:2016-01-11 15:27:25
【问题描述】:
我确定这是一个重复的问题,但我无法让它发挥作用。我与实体 Home 和实体 Address 之间的共享主键存在一对零或一关系。
我的问题是我不断收到错误
缺少列:id
我正在映射我的实体,如here 所示,但不同的是,我的Address 实体的列名不称为id,而是homeId_pf。
这是我的实体:
@Entity
@Table(name = "homes")
@Getter
@Setter
public class Home implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false, updatable = false)
private Long id;
@OneToMany(fetch = EAGER, cascade = {ALL}, orphanRemoval = true)
@JoinColumn(name = "homeId_fk", referencedColumnName = "id", nullable = false)
private Set<Room> rooms = new HashSet<>();
@OneToOne(fetch = EAGER, cascade = {ALL})
@PrimaryKeyJoinColumn
private Address address;
}
@Entity
@Table(name = "addresses")
@Getter
@Setter
public class Address implements Serializable {
@Id
@Column(name = "homeId_pf")
private Long id;
private Integer city;
@MapsId
@OneToOne
@JoinColumn(name = "id")
private Home home;
}
如前所述,我的addresses 表有两列:homeId_pf,设置为 PK,FK 设置为homes.id 和city。
我也尝试在Address 类上设置@JoinColumn(name = "homeId_pf"),在Home 实体上设置@PrimaryKeyJoinColumn(referencedColumnName = "homeId_pf"),但没有帮助。
【问题讨论】:
-
可能是一个重复的问题:这有帮助吗? stackoverflow.com/questions/11938253/jpa-joincolumn-vs-mappedby
标签: java hibernate jpa one-to-one shared-primary-key