使用hibernate中的hql进行分页设置setMaxResults(int a)出错,索引1越界,hql执行不了等等问题

HQL分页,执行的时候报错

Parameter index out of range (1 > number of parameters, which is 0)

刚开始以为是HQL错误,各种调试,各种报错,自己把HQL全删除,不加入变量,发现仍然错误。在网上找各种方式测试,发现都不行。

最后把setMaxResults()注释掉,正确执行,换上自己的HQL,也完美运行,最终确定不是HQL的错误。

开始以setMaxResults()出错为关键词搜索,发现这位博友和我有类似的问题(地址:http://blog.csdn.net/zcswl7961/article/details/51323299),出现在hibernate数据库方言设置上。

hibernate.cfg.xml中设置如下部分

<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>

如果是使用spring代理,下为C3P0连接池

<bean id="SessionFactory"
        class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.MySQL5Dialect
                </prop>
            </props>
        </property>
        <property name="mappingResources">
            <list>
                            <value>xxx.hbm.xml</value>
            </list>
        </property>
    </bean>        

请核对是否与相关的数据库对应。

下面是网友的对应表(原文:http://blog.csdn.net/jialinqiang/article/details/8679171

以下是各数据库对应的方言(Dialect):

数据库

方言(Dialect)

DB2

org.hibernate.dialect.DB2Dialect

DB2 AS/400

org.hibernate.dialect.DB2400Dialect

DB2 OS390

org.hibernate.dialect.DB2390Dialect

PostgreSQL

org.hibernate.dialect.PostgreSQLDialect

MySQL5

org.hibernate.dialect.MySQL5Dialect

MySQL5 with InnoDB

org.hibernate.dialect.MySQL5InnoDBDialect

MySQL with MyISAM

org.hibernate.dialect.MySQLMyISAMDialect

Oracle(any version)

org.hibernate.dialect.OracleDialect

Oracle 9i

org.hibernate.dialect.Oracle9iDialect

Oracle 10g

org.hibernate.dialect.Oracle10gDialect

Oracle 11g

org.hibernate.dialect.Oracle10gDialect

Sybase

org.hibernate.dialect.SybaseASE15Dialect

Sybase Anywhere

org.hibernate.dialect.SybaseAnywhereDialect

Microsoft SQL Server 2000

org.hibernate.dialect.SQLServerDialect

Microsoft SQL Server 2005

org.hibernate.dialect.SQLServer2005Dialect

Microsoft SQL Server 2008

org.hibernate.dialect.SQLServer2008Dialect

SAP DB

org.hibernate.dialect.SAPDBDialect

Informix

org.hibernate.dialect.InformixDialect

HypersonicSQL

org.hibernate.dialect.HSQLDialect

H2 Database

org.hibernate.dialect.H2Dialect

Ingres

org.hibernate.dialect.IngresDialect

Progress

org.hibernate.dialect.ProgressDialect

Mckoi SQL

org.hibernate.dialect.MckoiDialect

Interbase

org.hibernate.dialect.InterbaseDialect

Pointbase

org.hibernate.dialect.PointbaseDialect

FrontBase

org.hibernate.dialect.FrontbaseDialect

Firebird

org.hibernate.dialect.FirebirdDialect

原文地址:https://www.cnblogs.com/aocshallo/p/6363037.html