یکی از مواردی که حتما در کار کردن با hibernate براتون پیش اومده اینه که یکquery بنویسیدکه نتیجه اون چیزی به غیر از یکی از

domain model شما باشه برای مثال استفاده از دستورات count,sum,و  در این حالت باید یک مدل جدید برای نتایج ایجاد کنید برای

مثال اگر شما بخواهید این نتایج را برگدونید باید روش زیر را انجام بدید

 
Iterator results = sess.createQuery(
        "select cat.color, min(cat.birthdate), count(cat) from Cat cat " +
        "group by cat.color")
        .list()
        .iterator();

while ( results.hasNext() ) {
    Object[] row = (Object[]) results.next();
    Color type = (Color) row[0];
    Date oldest = (Date) row[1];
    Integer count = (Integer) row[2];
    .....
}

 ولی این راه حل مشکلی که داره اینه که اولا وابسته به index نتایج هستید و کلا کار قشنگ و درستی نیست ولی حالا کد زیر را نگاه کنید

 
Query query=sess.createQuery("select cat.color, min(cat.birthdate), count(cat) from Cat cat
group by cat.color").setResultTransformer(Transformers.aliasToBean(YourObject.class));
List<YourObject> lst=query.list();