I have a simple entity called EmployeeEntity
with properties ID
, Name
, Age
, Organisation
, and Designat
If you only want a certain set of columns, create a class that maps one to one with your columns. Like so:
public class EmployeeView
{
public string Name { get; set; }
public string Designation { get; set; }
public int Age { get; set; }
public string Organization { get; set; }
}
You then just need to add a result transformer to your query
IQuery query = session
.CreateQuery("select Name ,Designation ,Age ,Organisation FROM EmployeeEntity group by Name ,Designation ,Age ,Organisation")
.SetResultTransformer(Transformers.AliasToBean<EmployeeView>());
Ilist<EmployeeEntity> employee= query.List<EmployeeView>();
When you're querying with select Name, Designation, Age, Organisation...
, NHibernate will actually return an IList<object[]>
instance. To overcome this, try rewriting your HQL to select new EmployeeEntity(Name, Designation, Age, Organisation)...
and add an appropriate constructor to EmployeeEntity
class.