001
014
015 package com.liferay.portal.dao.orm.hibernate;
016
017 import com.liferay.portal.kernel.util.StringBundler;
018
019
023 public class DB2Dialect extends org.hibernate.dialect.DB2Dialect {
024
025 public String getLimitString(String sql, boolean hasOffset) {
026 if (!sql.startsWith("(")) {
027 return super.getLimitString(sql, hasOffset);
028 }
029
030 StringBundler sb = new StringBundler(5);
031
032 sb.append("select cursor1.* from (");
033 sb.append("select rownumber() over() as rownumber_, cursor2.* from (");
034 sb.append(sql);
035 sb.append(") as cursor2) as cursor1 where rownumber_");
036
037 if (hasOffset) {
038 sb.append(" between ? + 1 and ?");
039 }
040 else {
041 sb.append(" <= ?");
042 }
043
044 return sb.toString();
045 }
046
047 }