我有一个如下所述的父子实体。 (deviceId,dateTime) 元组是子表中的复合外键,这两个属性都是父表中复合主键的一部分。我如何在 JPA 中映射它?
public class Child {
private class ChildPk implements Serializable {
private static final long serialVersionUID = 1L;
private String deviceId;
private String dateTime;
private int index;
//Getters and setters
}
@EmbeddedId
@AttributeOverrides(value = {
@AttributeOverride(name = "deviceId", column = @Column(name = "DeviceId")),
@AttributeOverride(name = "dateTime", column = @Column(name = "BillingDateTime")),
@AttributeOverride(name = "index", column = @Column(name = "TierIndex"))
})
private ChildPk pK;
//getters and setters
}
public class Parent{
private class ParentPk implements Serializable {
private static final long serialVersionUID = 1L;
private String deviceId;
private String dateTime;
}
@EmbeddedId
@AttributeOverrides(value = {
@AttributeOverride(name = "deviceId", column = @Column(name = "DeviceId")),
@AttributeOverride(name = "dateTime", column = @Column(name = "BillingDateTime"))
})
private ParentPk pK;
//Getters and setters
}
感谢任何帮助。
答案 0 :(得分:0)
@Entity
public static class Child {
private class ChildPk implements Serializable {
private static final long serialVersionUID = 1L;
@ManyToOne
private Parent parent;
private int index;
//Getters and setters
}
@EmbeddedId
@AssociationOverride(name = "parent", joinColumns = {
@JoinColumn(name = "DeviceId", referencedColumnName = "DeviceId"),
@JoinColumn(name = "BillingDateTime", referencedColumnName = "BillingDateTime")
})
@AttributeOverride(name = "index", column = @Column(name = "TierIndex"))
private ChildPk pK;
//getters and setters
}
@Entity
public static class Parent{
private class ParentPk implements Serializable {
private static final long serialVersionUID = 1L;
private String deviceId;
private String dateTime;
}
@EmbeddedId
@AttributeOverrides(value = {
@AttributeOverride(name = "deviceId", column = @Column(name = "DeviceId")),
@AttributeOverride(name = "dateTime", column = @Column(name = "BillingDateTime"))
})
private ParentPk pK;
//Getters and setters
}