我使用JPA 1.0,所以我限制了我能做些什麼,但我仍然認爲這應該是可以做到的。然而,下面我不能得到它的工作...Hibernate的一對多抽象類覆蓋ID
Table CustomerA
a_id
Table ProductB
a_id
b_id
Table ProductC
a_id
c_id
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class AbstractProduct {
@Id
@GeneratedValue....
private Long id;
private String name;
@ManyToOne()
JoinColumn(name="a_id")
private CustomerA customerA;
}
現在我想創建一個子類,可以通過乘坐Id
或創建一個基於Table A
的PK
和派生表的鍵組合鍵...
@Entity
@Table(name="ProductB")
public class ProductB extends AbstractProduct {
//@AttributeOverride(name="id", [email protected](name="B_ID") //Can only be used with MappedSuperClass and also Emmbedded Objects
//@Id //cant override the ID Column so that cant go here
//PrimaryKeycolumn join not what i want here
private Long productB_id;
private String productName;
}
@Entity
@Table(name="CustomerA")
public class CustomerA
{
@Id
@GeneratedValue....
@Column(name="a_id")
private Long aId
@OneToMany(mappedBy="customerA", cascade=CascadeType.ALL)
private Set<AbstractProduct> product;
}
所以基本上CustomerA
可以包含很多產品, 但它永遠只能爲ProductB
或ProductC
的。我如何可以覆蓋Id
在子類中,你不能使用attributeoverride
和實體,如果你使用@Entity
只要你指定一個@Entity
必須指定@Id
。我讀過的JPA維基,它看起來相當複雜,OTT在JPA 1.0實現這一點,但我想知道如果我失去了一些東西?