我使用nhibernate2.1作爲spring.net 1.3的一部分。我有以下聲明作爲我的映射的一部分。我的理解是,除非調用getter,否則這個對象不應該加載。我在setter上設置了一個斷點,並將所有nhibernate SQL語句轉儲到記錄器。在我的部分測試中,我實際上在原始對象上創建了一個全新的子對象和一個全新的屬性(因此在名稱中爲「2」),所以我肯定屬性沒有被訪問到任何地方。儘管如此,只要我的父對象加載,我可以驗證此屬性已加載。所以......我在這裏錯過了什麼?Nhibernate延遲加載一組不工作
<set name="UserCustomer2" lazy="true">
<key column="[FK_USERS]" />
<one-to-many class="UserCustomer2" />
</set>
@A:這裏是我的財產:
private ICollection<UserCustomer2> _UserCustomer2 = new HashSet<UserCustomer2>();
public virtual ICollection<UserCustomer2> UserCustomer2
{
get { return _UserCustomer2; }
set { this._UserCustomer2 = value; }
}
,這裏是我如何請求父對象:
IQuery query = dao.GetQuery("FROM UserImpl u WHERE u.UserName = :username AND u.Password = :password");
query.SetParameter("username", username);
query.SetParameter("password", password);
IList users = query.List();
你如何驗證對象被加載?你確定你沒有加載測試代碼或調試器等嗎? – NOtherDev
我看到在日誌中執行的SQL語句,並在setter上放置了一個斷點。當我執行時,會觸發斷點,當我將鼠標懸停在setter中的「value」上時,它是具有來自數據庫的正確數據的完全填充的對象。 – heath
您能否展示如何查詢父對象的數據庫以及UserCustomer2屬性在父類中的外觀? – NOtherDev