2008-12-30 75 views
0

您好我正在尋找在映射下表爲Hibernate映射文件中的一些幫助: schema image http://barry-jones.com/temp/sch2.jpgNHibernate的映射表中介

我試圖加載我userVOs時填的localCalandarGroups列表與相關localCalendarGroups。我使用的是中介表(user_localCalendarGroup),以確保用戶和localCalendarGroup IDS

public class UserVO 
{ 
    public virtual int id { get; set; } 
    public virtual string name { get; set; } 
    public virtual string pass { get; set; } 
    public virtual string email { get; set; } 
    public virtual string level { get; set; } 
    public virtual List<LocalCalendarGroupVO> localCalendarGroups { get; set; } 
} 
public class LocalCalendarGroupVO 
{ 

    public virtual int id { get; set; } 
    public virtual string name { get; set; } 

} 

這是我的映射文件迄今。我如何讓NHibernate知道中間表?

<class name="UserVO" table="tb_users" lazy="false"> 

<id name="id" column="id"> 

    <generator class="native" /> 

</id> 

<property name="name" /> 
<property name="pass" /> 
<property name="level" /> 
<property name="email" /> 
<property name="localCalendarGroups"/> 

任何幫助,指針讚賞。

回答

4

我建議你的第一件事就是使用IList而不是List來映射你的域類中的localCalendarGroups關聯。這將啓用延遲加載集合。下面是對UserVO類的映射文件:

<class name="UserVO" table="tb_users"> 
    <id name="id" column="id"> 
     <generator class="native" /> 
    </id> 
    <property name="name" /> 
    <property name="pass" /> 
    <property name="level" /> 
    <property name="email" /> 

    <bag name="localCalendarGroups" table="user_localCalendarGroup"> 
     <key column="userID" /> 
     <many-to-many class="LocalCalendarGroupVO" column="calID" /> 
    </bag> 
</class> 

和相應的類定義:

public class UserVO 
{ 
    public virtual int id { get; set; } 
    public virtual string name { get; set; } 
    public virtual string pass { get; set; } 
    public virtual string email { get; set; } 
    public virtual string level { get; set; } 
    public virtual IList<LocalCalendarGroupVO> localCalendarGroups { get; set; } 
} 
+0

感謝您的支持。不幸的是,我不斷收到映射異常。我會玩一玩,看看我是否解決不了。再次感謝。 – user17510 2008-12-30 11:40:40