【发布时间】:2018-05-05 04:03:35
【问题描述】:
我有 3 张桌子:
MainTable , Dependent1 , Dependent2.
MainTable 外键(DependentPK)是表 Dependent1 和 Dependent1 的主键。 MainTable 到 Dependent1 和 MainTable 到 Dependent2 是一对一的关系。
主表:
@Entity
@Table(name = "mainTable")
@Getter
@Setter
public class MainTable implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO_INCREMENT)
@Column(name = "id", nullable = false)
private Integer id;
@Embedded
DependentPK key;
@Column(name = "mainfield1")
private Integer mainField1;
}
DependentPK(主键):
@Embeddable
@EqualsAndHashCode
@Getter
@Setter
public class DependentPK implements Serializable {
public DependentPK() {}
public DependentPK(String field1, String field2) {
this.field1 = field1;
this.field2 = field2;
}
@Column(name = "field1", nullable = false)
private String field1;
@Column(name = "field1", nullable = false)
private String field1;
}
从属 1 表:
@Entity
@Table(name = "dependent1")
@Getter
@Setter
public class Dependent1 implements Serializable {
@EmbeddedId
private DependentPK id;
@Column(name = "modified_by")
private String modifiedBy;
}
Dependent2 表:
@Entity
@Table(name = "dependent2")
@Getter
@Setter
public class Dependent2 implements Serializable {
@EmbeddedId
private DependentPK id;
@Column(name = "name")
private String name;
}
以上示例仅用于描述问题。 我无法更改数据库约束和表,因为它是生产数据库。
我的问题是在这种情况下如何使用一对一的映射注释?
因为相同的复合键(2 列的组合)作为引用 Dependent1 和 Dependent2 表主键的外键。
【问题讨论】:
标签: java postgresql hibernate jpa jpa-2.0