2012-12-04 67 views
0

我的大腦已經開始傷害想着這個,是不是就這麼簡單:自參考多對多使用Hibernate和註釋

@ManyToMany(mappedBy = "following", cascade = CascadeType.ALL) 
private Set<User> followers = new HashSet<User>(); 

@ManyToMany(mappedBy = "followers", cascade = CascadeType.ALL) 
private Set<User> following = new HashSet<User>(); 
+0

鏈接的實體UserRel FTW –

+0

@ jenson-按鈕事件我必須指定鏈接器表,我不能讓休眠選擇? – NimChimpsky

+0

你不需要,但它的建議 - 基於很少你不需要其他列之間 - 但嘿,這是如何做到這一點,確保你指定表和列http://www.dzone.com/tutorials /java/hibernate/hibernate-example/hibernate-mapping-many-to-many-using-annotations-1.html –

回答

3

喜歡的東西:

@ManyToMany(mappedBy = "following", cascade = CascadeType.ALL) 
@JoinTable(name="UserRel", 
       joinColumns={@JoinColumn(name="ParentId")}, 
       inverseJoinColumns={@JoinColumn(name="UserId")}) 
private Set<User> followers = new HashSet<User>(); 

@ManyToMany(cascade = CascadeType.ALL) 
@JoinTable(name="UserRel", 
       joinColumns={@JoinColumn(name="UserId")}, 
       inverseJoinColumns={@JoinColumn(name="ParentId")}) 
private Set<User> following = new HashSet<User>(); 
+0

謝謝,但我只是從一個聲明中移除了mappedBy,它起作用。你不能在雙方都映射,所以你的exampke不會工作 – NimChimpsky

+0

好吧,所以它按照慣例挑選表和列名...甜 –