を上書き私はJPA 1.0を使用して、私は私が何ができるかに制限されていますが、私はまだしかし、私はそれが動作しますカント次のことを行うことが可能であるべきだと思う...休止oneToMany抽象クラスは、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
のいずれかになります。どのようにあなたがattributeoverride
とエンティティを使用するカントとして私は、サブクラスでId
を上書きすることができ、あなたが@Entity
を使用する場合は@Entity
を指定するたびに@Id
を指定する必要があります。私はjpa wikiを読んできましたが、JPA 1.0でこれを実現するにはかなり複雑に見えますが、何か不足しているのだろうかと思います。