Hibernate使用命名查询对oracle进行分页查询不能正确设置参数 15
SELECT*FROM(SELECTA.*,ROWNUMRNFROM(SELECT*FROMTABLE_NAME)AWHEREROWNUM<=:ENDROWNUM)WHE...
SELECT * FROM ( SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= :ENDROWNUM ) WHERE RN >=:STARTROWNUM
报错:could not locate named parameter,是不是不支持呢 展开
FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= :ENDROWNUM ) WHERE RN >=:STARTROWNUM
报错:could not locate named parameter,是不是不支持呢 展开
1个回答
展开全部
第一个是从第几条开始,第二个是每页几条。
你看看你数据库里面的数据够不够分页,你这样只写两句就分页是不够的。
page = Paginator.showPage(dao, hql, paramValues, pageCurrent, pageSize);
/*
* 利用hql实现翻页
*/
public static Page showPage(PersistentBaseDao pdao, String hql,
Object[] paramValues, int pageCurrent, int pageSize) {
// 入口参数校验(无)
if (pdao == null) {
// log.debug("Paginator.pdao.hql is Empty");
}
if (hql.equals("") || hql == null) {
// log.debug("Paginator.showPage.hql is Empty");
}
if (pdao == null) {
// log.debug("Paginator.showPage.pdao is Empty");
}
PersistentBaseDao dao = (PersistentBaseDao) pdao;
// 如果当前页大于>总的页数,则让当前页等于总页数
int tempPageCount =0;
if (paramValues == null) {
tempPageCount = dao.getPageCount(hql, (Object[]) null, pageSize);
} else {
tempPageCount= dao.getPageCount(hql, paramValues, pageSize);
}
if (pageCurrent > tempPageCount) {
pageCurrent = tempPageCount;
}
// 如果当前页大于<1,则让当前页等于1
if (pageCurrent < 1) {
pageCurrent = 1;
}
// 调用dao.serarch()方法
if (paramValues == null) {
page = dao.search(hql, pageCurrent, pageSize);
} else {
page = dao.search(hql, paramValues, pageCurrent, pageSize);
}
// 为page对象设置当前页的属性
page.setPageCurrent(pageCurrent);
// 将page对象放在request对象中
return page;
}
/*
* 利用List实现翻页
*/
@SuppressWarnings("unchecked")
public static Page showPage(List list, int pageCurrent, int pageSize) {
// 入口参数校验(无)
if (list.isEmpty()) {
// log.debug("Paginator.showPage.list is Empty");
}
// 如果当前页大于>总的页数,则让当前页等于总页数
if (pageCurrent > page.getPageCount()) {
pageCurrent = page.getPageCount();
}
// 如果当前页大于<1,则让当前页等于1
if (pageCurrent < 1) {
pageCurrent = 1;
}
List ls = new ArrayList();
// 根据得到的list转化为page对象
if (list.size() % pageSize == 0) {
page.setPageCount((list.size() / pageSize));
} else {
page.setPageCount((list.size() / pageSize) + 1);
}
page.setPageCurrent(pageCurrent);
page.setRecordCound(list.size());
int stag = (pageCurrent - 1) * pageSize;
int etag = pageCurrent * pageSize;
for (int i = stag; i < list.size() && i < etag; i++) {
ls.add(list.get(i));
}
page.setDataList(ls);
return page;
}
你看看你数据库里面的数据够不够分页,你这样只写两句就分页是不够的。
page = Paginator.showPage(dao, hql, paramValues, pageCurrent, pageSize);
/*
* 利用hql实现翻页
*/
public static Page showPage(PersistentBaseDao pdao, String hql,
Object[] paramValues, int pageCurrent, int pageSize) {
// 入口参数校验(无)
if (pdao == null) {
// log.debug("Paginator.pdao.hql is Empty");
}
if (hql.equals("") || hql == null) {
// log.debug("Paginator.showPage.hql is Empty");
}
if (pdao == null) {
// log.debug("Paginator.showPage.pdao is Empty");
}
PersistentBaseDao dao = (PersistentBaseDao) pdao;
// 如果当前页大于>总的页数,则让当前页等于总页数
int tempPageCount =0;
if (paramValues == null) {
tempPageCount = dao.getPageCount(hql, (Object[]) null, pageSize);
} else {
tempPageCount= dao.getPageCount(hql, paramValues, pageSize);
}
if (pageCurrent > tempPageCount) {
pageCurrent = tempPageCount;
}
// 如果当前页大于<1,则让当前页等于1
if (pageCurrent < 1) {
pageCurrent = 1;
}
// 调用dao.serarch()方法
if (paramValues == null) {
page = dao.search(hql, pageCurrent, pageSize);
} else {
page = dao.search(hql, paramValues, pageCurrent, pageSize);
}
// 为page对象设置当前页的属性
page.setPageCurrent(pageCurrent);
// 将page对象放在request对象中
return page;
}
/*
* 利用List实现翻页
*/
@SuppressWarnings("unchecked")
public static Page showPage(List list, int pageCurrent, int pageSize) {
// 入口参数校验(无)
if (list.isEmpty()) {
// log.debug("Paginator.showPage.list is Empty");
}
// 如果当前页大于>总的页数,则让当前页等于总页数
if (pageCurrent > page.getPageCount()) {
pageCurrent = page.getPageCount();
}
// 如果当前页大于<1,则让当前页等于1
if (pageCurrent < 1) {
pageCurrent = 1;
}
List ls = new ArrayList();
// 根据得到的list转化为page对象
if (list.size() % pageSize == 0) {
page.setPageCount((list.size() / pageSize));
} else {
page.setPageCount((list.size() / pageSize) + 1);
}
page.setPageCurrent(pageCurrent);
page.setRecordCound(list.size());
int stag = (pageCurrent - 1) * pageSize;
int etag = pageCurrent * pageSize;
for (int i = stag; i < list.size() && i < etag; i++) {
ls.add(list.get(i));
}
page.setDataList(ls);
return page;
}
追问
可能你没明白我的意思,我想问的是Hibernate命名查询(sql,不是hql)是不是支持给ROWNUM传参数
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询