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 @Override
026 public String getLimitString(String sql, boolean hasOffset) {
027 if (!sql.startsWith("(")) {
028 return super.getLimitString(sql, hasOffset);
029 }
030
031 StringBundler sb = new StringBundler(5);
032
033 sb.append("select cursor1.* from (");
034 sb.append("select rownumber() over() as rownumber_, cursor2.* from (");
035 sb.append(sql);
036 sb.append(") as cursor2) as cursor1 where rownumber_");
037
038 if (hasOffset) {
039 sb.append(" between ? + 1 and ?");
040 }
041 else {
042 sb.append(" <= ?");
043 }
044
045 return sb.toString();
046 }
047
048 }