2012-03-25 36 views
0

我是Hibernate的新手,我在努力解決問題:從多選一列

我有3個表,我需要在DataGridView上顯示這些表中的一些數據。 通常 - 沒有冬眠,我必須做出選擇和綁定列。

但我不需要這些表中的所有列。 我做了一個示例項目,我從一個表中選擇數據。我將數據存儲爲hibernate poco對象的集合。然後我將它作爲數據源綁定到DataGridView,這很好。

如何綁定,如果我需要來自多個表的列? 我應該有一個班級的列。或者3個poco課程?或者我完全錯了,我需要在映射級別上做到這一點?

回答

1

如果你只是需要顯示數據(而不是改變它),你可以爲你想要在DataGridView中列出的對象定義一個類,例如,

CombinedClassForGrid 
{ 
    public Id { get; set; } 
    public PropertyA1 { get; set; } 
    public PropertyB1 { get; set; } 
    public PropertyB2 { get; set; } 
} 

與NHibernate可以查詢這樣的表中,假設ClassA有一個屬性ClassBRef

ClassB bAlias = null; 
CombinedClassForGrid cForGrid = null; 

IList<CombinedClassForGrid> result = session.QueryOver<ClassA>() 
    .JoinAlias(a => a.ClassBRef,() => bAlias) 
    .SelectList(list => list 
     .Select(a => a.Id).WithAlias(() => cForGrid.Id) 
     .Select(a => a.Property1).WithAlias(() => cForGrid.PropertyA1) 
     .Select(a => bAlias.Property1).WithAlias(() => cForGrid.PropertyB1) 
     .Select(a => bAlias.Property2).WithAlias(() => cForGrid.PropertyB2)) 
     .TransformUsing(Transformers.AliasToBean<CombinedClassForGrid>()) 
     .List<CombinedClassForGrid>(); 

那麼你應該能夠綁定result您的DataGridView。

+0

謝謝。這就是我要的。 – userbb 2012-03-29 09:09:37