2010-11-30 81 views
1

我已经做了条件,但是当我使用setMaxResults时,它会给我异常SQLGrammarException。但是,当我评论setMaxResults时,它将在返回第一个结果后返回所有条目。我正在使用MySQL数据库。Hibernate使用Criteria setMaxResults给出SQLGrammarException

代码:

return criteria 
      .setFirstResult(start) 
      .setMaxResults(end) 
      .setFetchSize(end) 
      .list(); 

例外:

org.hibernate.exception.SQLGrammarException: could not execute query 
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92) 
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 
    at org.hibernate.loader.Loader.doList(Loader.java:2536) 
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276) 
    at org.hibernate.loader.Loader.list(Loader.java:2271) 
    at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119) 
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1716) 
    at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347) 

.... 

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ... 
+2

尝试设置“show_sql`属性为true,并检查了生成的查询尝试figureout从中 – 2010-11-30 07:27:49

回答

4

问题现在已经解决了。我在hibernate属性中使用了错误的方言。我从其他使用SQL Server的项目复制了我的属性,但是这个使用了MySQL,所以错误的方言导致了这个错误。

hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect 
+0

问题,我当我使用这个属性得到了错误:<属性名=‘hibernate.dialect’值=“组织。 hibernate.dialect.HSQLDialect“/>,但是当我删除它,它工作正常。谢谢新手:) – Hazim 2016-02-05 19:27:14

相关问题