我有3個類,一個超類和兩個子類。每個子類都有另一個子類的集合,我想映射它們之間的一對多關係。我的超類是人,而這個子類被稱爲referrer和broker。我想表達的關係是一個推薦人可以有很多經紀人,一個經紀人可以有很多推薦人。Hibernate註釋創建關係
@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>();
對經紀人的主鍵應該是一個名爲ROWID字段包含在人父之內。
我真的卡住了,所以任何幫助將不勝感激。
我結束了使用一個連接表,並在連接表內做了一對多然後多對多。因此,經紀人和推薦人都有一對一,然後在我的聯合表中都有一對一的。 它似乎工作。我希望。 – JamesENL
這種映射通常在連接表中有其他列時完成。如果連接表只有兩列(經紀人,推薦人的Pk),那麼它是頭頂上的。 http://stackoverflow.com/questions/5127129/mapping-many-to-many-association-table-with-extra-columns反正它的你的選擇,但只是說,有沒有不必要的管理crud的頭部映射到實體連接表 –