Я должен разработать запрос для разбивки на страницы (и сортировки тоже), используя Hibernate.
Я уже разработал это, используя критерий запроса, как показано ниже, и работает также хорошо.
//normal criteria query
Criteria crit = session.createCriteria(User.class);
if(sortBy == null || sortBy.isEmpty()){
crit.addOrder(Order.asc("userId"));
}else{
if("asc".equals(sortOrder)){
crit.addOrder(Order.asc(sortBy));
}else if("desc".equals(sortOrder)){
crit.addOrder(Order.desc(sortBy));
}else{
crit.addOrder(Order.asc(sortBy));
}
}
crit.setFirstResult((pageNo - 1) * pageSize );
crit.setMaxResults(pageSize);
crit.list()
Но фактический запрос, который я получил от бизнеса, очень сложен, как показано ниже -
select table1.column1,table1.column2,table1.column3,table2.column1,table2.column2,table3.column1
from table1,table2,table3
where table1.column1 = table2.column2
and table2.column1=table3.column2
Мой вопрос:
Как мне написать paginated query
, используя criteria
для вышеуказанного запроса?
Мне нужно использовать criteria
, поскольку он поддерживает пагинацию с - setFirstResult and setMaxResults
Любое руководство, пожалуйста?