我有一个带有复合PK的表:Customer 我有一个没有PK的视图:购买
为了绑定我的实体,Hibernate强迫我声明一个PK。 所以我创建了一个复合PK For Purchase。
Puchase:
@Entity
@Table(name = "PURCHASE")
public class Purchase {
@EmbeddedId
private PurchasePK id;
}
PuchasePK:
@Embeddable
public class PurchasePK {
@Column(name = "CUST_LASTNAME")
private String custLastname;
@Column(name = "OBJ_NAME")
private Long objectName;
}
客户很直接:
@Entity
@Table(name = "CUSTOMER")
public class Customer {
@EmbeddedId
private CustomerPK id;
}
使用其复合PK:
@Embeddable
public class CustomerPK {
@Column(name = "CUST_LASTNAME")
private String custLastname;
@Column(name = "CUST_NAME")
private Long custName;
}
现在,我想通过匹配两个表CUST_NAME在Customer中创建OneToMany attribut。
@OneToMany
private List<Purchase> listPurchases;
我该怎么做?
我搜索了很多,如果PK有2列,它总是归结为无法在1列上进行FK ...
PS:我正在使用JPA 1,因此我无法访问@MapsId。
PS2:我的真实模特不是关于客户&amp;购买和用于PK的attributs不是varchar而是Long。
答案 0 :(得分:0)
直接回答你的问题 - 我认为你不能这样做。 我建议通过引入CUSTOMER_ID字段重新考虑这个模型,因为第一个+姓氏通常不是独一无二的。此外,仅使用姓氏加入将为您提供购买的组合,因为可能会有&#34; Mike Smith&#34;,&#34; John Smith&#34;作为客户。拥有数字ID可以解决我想到的所有问题。