2 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
不要使用外來的關(guān)聯(lián)映射。
真正的多到多關(guān)聯(lián)的良好用法是罕見的。大多數(shù)情況下,您需要存儲在“鏈接表”中的其他信息。在這種情況下,對中間鏈接類使用兩個(gè)一對多的關(guān)聯(lián)要好得多。事實(shí)上,我們認(rèn)為大多數(shù)的關(guān)聯(lián)是一對多的和多對一的,在使用任何其他的關(guān)聯(lián)風(fēng)格時(shí),你應(yīng)該小心,并問自己是否真的有必要。
Author
Work
:
<class name="Work" table="works" ...> <id name="Id" column="id" generator="native" /> ... <set name="Authors" table="author_work" lazy="true"> <key> <column name="work_id" not-null="true"/> </key> <many-to-many class="Author"> <column name="author_id" not-null="true"/> </many-to-many> </set></class>
<class name="Author" table="authors"> ... <set name="Works" table="author_work" inverse="true" lazy="true"> <key column="author_id"/> <many-to-many class="Work" column="work_id"/> </set></class>
AuthorWork
public class AuthorWork{ public virtual Author Author { get; set; } public virtual Work Work { get; set; } public virtual int OrderBy { get; set; }}
<class name="AuthorWork" table="author_work"> ... <many-to-one name="Author" column="author_id" /> <many-to-one name="Workr" column="work_id" /> <property name="OrderBy" />
<set name="Authors" lazy="true" order-by="OrderBy"> <key column="work_id" not-null="true"/> <one-to-many class="AuthorWork" /></set>
注:必須同意這一建議,在綜述中提出的要求越多,我們就越高興我們有辦法來管理這種關(guān)系!

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
User
Role
User one-to-many UserRoles many-to-one Role
User
, Role
UserRoles
UserRoles
User
Role
User
Role
UserRoles
添加回答
舉報(bào)