1 つのスーパークラスと 2 つのサブクラスの 3 つのクラスがあります。各サブクラスには他のサブクラスのコレクションがあり、それらの間の 1 対多の関係をマップしたいと考えています。私のスーパークラスは person で、サブクラスはリファラーとブローカーと呼ばれます。私が表現したい関係は、1 つのリファラーが多くのブローカーを持つことができ、1 つのブローカーが多くのリファラーを持つことができるということです。
@Component
@Entity
@Table(name="Referrer")
@PrimaryKeyJoinColumn(name="rowID")
public class Referrer extends Person implements Serializable{
private static final long serialVersionUID = 972571370198603227L;
@Column(name="rowId")
private String referrerID;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn
private List<Broker> brokers = new ArrayList<Broker>();
ブローカーは次のようになります。
@Component
@Entity
@Table(name="Broker")
@PrimaryKeyJoinColumn(name="rowID")
public class Broker extends Person implements Serializable {
private static final long serialVersionUID = 5648239413711716027L;
@Column(name="AdminID", nullable=true)
private String adminID;
@Column
private boolean isAdmin = false;
@OneToMany(cascade=CascadeType.ALL, mappedBy="referrer")
private List<Referrer> referrers = new ArrayList<Referrer>();
Broker の主キーは、Person スーパークラスに含まれる rowID というフィールドである必要があります。
私は本当に立ち往生しているので、どんな助けも大歓迎です。