2011-03-10 68 views
1
<class name="CashThreshold" table="CASH_THRESHOLD_COUNTERS" lazy="true" > 
<id name="Id" column="ID" > 
    <generator class="assigned" /> 
</id> 
<bag name="ThresholdNominalsList" cascade="all" inverse="true" lazy="false" table="CASH_THRESHOLD_CAS_COUNTERS"> 
    <key column="CASH_THRESHOLD_ID" /> 
    <one-to-many class="NominalThreshold" /> 
</bag> 

NHibernate的映射不填充袋

地圖第二臺

<class name="NominalThreshold" table="CASH_THRESHOLD_CAS_COUNTERS" lazy="true" > 
<composite-id> 
    <key-property name="CashTrasholdId" column="CASH_THRESHOLD_ID" type="long"></key-property> 
    <key-property name="Nominal" column="NOMINAL" type="long"></key-property> 
</composite-id> 

<property name="MinNoteCount" column="MIN_NOTE_COUNT" /> 
<property name="MaxNoteCount" column="MAX_NOTE_COUNT" /> 

表類

public class CashThreshold : ICashThreshold 
{ 
    public virtual long Id { set; get; } 

    /// !!!!!!! IS ALWAYS AMPTY, but not null !!!!! 
    public virtual IList<INominalThreshold> ThresholdNominalsList { set; get; } 
} 

public class NominalThreshold : INominalThreshold 
{ 
    public virtual long CashTrasholdId { set; get; } 
    public virtual long Nominal { set; get; } 
    public virtual long MinNoteCount { set; get; } 
    public virtual long MaxNoteCount { set; get; } 

    public override bool Equals(Object obj) 
    { 
     var tmp = (INominalThreshold)obj; 
     return (tmp.CashTrasholdId == CashTrasholdId && tmp.Nominal == Nominal); 
    } 

    public override int GetHashCode() 
    { 
     return (int)CashTrasholdId^(int)Nominal; 
    } 
} 

功能爲獲得ICashThre名單shold蒙山沒有錯誤執行

 ICriteria selectAll = currentSession.CreateCriteria<ICashThreshold>(); 

     IList<ICashThreshold> list = selectAll.List<ICashThreshold>(); 

查詢。 Bag-query在sql-client中成功執行並返回4個結果,但是IList < INominalThreshold> ThresholdNominalsList沒有元素。

謝謝。

回答

0

問題已解決。 NHibernate成功映射包,但是列表是空的,因爲數據庫中的數據是NOT COMMITTED。我在表格中插入了測試數據,但沒有提交。當我在sql-client中執行查詢時,它成功執行(因爲在session中插入表格行),但是hibernate有另一個會話。那就是爲什麼NHibernate無法看到表格數據。