I try to get first 10 rows of a table from db2 database, but get only exceptions...
Hibernate version: 3.2.0.ga
Code between sessionFactory.openSession() and session.close():
Query query = HibernateUtil.currentSession().createQuery("from Subject");
query.setMaxResults(10);
List<Subject> subjects = (List<Subject>)query.list();
The generated SQL:
Hibernate: select top 10 subject0_.FID as FID0_ from INDIC.SUBJECT subject0_
I don't understand why it use "TOP" instead of "fetch first N row only". Db2 databese dosen't support "TOP" clause.
How could I fix this??
Name and version of the database: DB2 8.2.1, driver: com.ibm.db2.jcc.DB2Driver
Full stack trace:
WARN JDBCExceptionReporter:71 - SQL Error: -104, SQLState: 42601
ERROR JDBCExceptionReporter:72 - DB2 SQL error: SQLCODE: -104, SQLSTATE: 42601, SQLERRMC: 10;select top ;.
WARN JDBCExceptionReporter:71 - SQL Error: -727, SQLState: 56098
ERROR JDBCExceptionReporter:72 - DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-104;42601;10|select top |.
WARN JDBCExceptionReporter:71 - SQL Error: -727, SQLState: 56098
ERROR JDBCExceptionReporter:72 - DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-104;42601;10|select top |.
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2147)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2028)
at org.hibernate.loader.Loader.list(Loader.java:2023)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:393)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at ru.nbch.quality.logic.ReportProcessor.main(ReportProcessor.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Caused by: com.ibm.db2.jcc.b.SqlException: DB2 SQL error: SQLCODE: -104, SQLSTATE: 42601, SQLERRMC: 10;select top ;.
at com.ibm.db2.jcc.b.id.e(id.java:1640)
at com.ibm.db2.jcc.b.id.a(id.java:1229)
at com.ibm.db2.jcc.c.fb.h(fb.java:149)
at com.ibm.db2.jcc.c.fb.a(fb.java:43)
at com.ibm.db2.jcc.c.s.a(s.java:30)
at com.ibm.db2.jcc.c.wb.g(wb.java:152)
at com.ibm.db2.jcc.b.id.n(id.java:1209)
at com.ibm.db2.jcc.b.jd.eb(jd.java:1779)
at com.ibm.db2.jcc.b.jd.a(jd.java:2232)
at com.ibm.db2.jcc.b.jd.V(jd.java:505)
at com.ibm.db2.jcc.b.jd.executeQuery(jd.java:488)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1668)
at org.hibernate.loader.Loader.doQuery(Loader.java:662)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2144)
... 13 more
|