1
我正在嘗試檢索單獨的詳細行,而不必爲父項創建一個對象。我有一個地圖,加入一個父表與細節來實現這一點:在NHibernate映射中使用連接的重複項
Table("UdfTemplate");
Id(x => x.Id, "Template_Id");
Map(x => x.FieldCode, "Field_Code");
Map(x => x.ClientId, "Client_Id");
Join("UdfFields", join =>
{
join.KeyColumn("Template_Id");
join.Map(x => x.Name, "COLUMN_NAME");
join.Map(x => x.Label, "DISPLAY_NAME");
join.Map(x => x.IsRequired, "MANDATORY_FLAG")
.CustomType<YesNoType>();
join.Map(x => x.MaxLength, "DATA_LENGTH");
join.Map(x => x.Scale, "DATA_SCALE");
join.Map(x => x.Precision, "DATA_PRECISION");
join.Map(x => x.MinValue, "MIN_VALUE");
join.Map(x => x.MaxValue, "MAX_VALUE");
});
當我使用運行在NH查詢:
Session.CreateCriteria(typeof(UserDefinedField))
.Add(Restrictions.Eq("FieldCode", code)).List<UserDefinedField>();
我回來的第一行三次,而不是它應該返回的三個單獨的行。查看NH Profiler中的SQL跟蹤,查詢看起來是正確的。問題感覺就像是在映射中,但我不確定如何解決該過程。我即將開啓日誌記錄以查看我能找到的內容,但是我想我會在這裏發帖,以防某些有經驗映射連接的人知道我出錯的位置。
我改變的加盟,使該方向的測繪工程模板>字段。這是不理想的,因爲我必須創建額外的對象/地圖,但它會導致類似的查詢被執行,並且我正在尋找最終結果。如果任何人有關於如何加入孩子>父母的話,仍然可以打開想法。 – 2010-03-22 17:55:04
您是否嘗試過使用DistinctRootEntity轉換器?會是像.SetResultTransformer(CriteriaUtil.DistinctRootEntity) – ddango 2010-03-23 16:35:41
我做過 - 它只會返回一行而不是三個不同的行。 – 2010-03-24 17:11:31