java - setMaxResults(max_size) throws Sql command not properly ended exception -


i'm using hibernate version 4.3.11.final , 1.0.0.final. hibernate.dilect=org.hibernate.dialect.oracle12cdialect

final string hql1 = "select s " + app.class.getsimplename() + " s s.id = " + getid(); when i'm calling  mentitymanager.createquery(hql1, app.class).setmaxresults(3); 

generated hql = "select app_.id id6_157_ test.app_table app_ app_.id=83700 fetch first ? rows only"

problme seems '?' not being replaced value 3 of setmaxresults, not figure out how fix it. it's throwing exception :-

java.sql.sqlsyntaxerrorexception: ora-00933: sql command not ended   oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.java:445)  oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.java:396)  oracle.jdbc.driver.t4c8oall.processerror(t4c8oall.java:879)  oracle.jdbc.driver.t4cttifun.receive(t4cttifun.java:450)  oracle.jdbc.driver.t4cttifun.dorpc(t4cttifun.java:192)  oracle.jdbc.driver.t4c8oall.dooall(t4c8oall.java:531)  oracle.jdbc.driver.t4cpreparedstatement.dooall8(t4cpreparedstatement.java:207)  oracle.jdbc.driver.t4cpreparedstatement.executefordescribe(t4cpreparedstatement.java:884)  oracle.jdbc.driver.oraclestatement.executemaybedescribe(oraclestatement.java:1167)  oracle.jdbc.driver.oraclestatement.doexecutewithtimeout(oraclestatement.java:1289)  oracle.jdbc.driver.oraclepreparedstatement.executeinternal(oraclepreparedstatement.java:3584)  oracle.jdbc.driver.oraclepreparedstatement.executequery(oraclepreparedstatement.java:3628)  oracle.jdbc.driver.oraclepreparedstatementwrapper.executequery(oraclepreparedstatementwrapper.java:1493)  com.zaxxer.hikari.pool.proxypreparedstatement.executequery(proxypreparedstatement.java:52)  com.zaxxer.hikari.pool.hikariproxypreparedstatement.executequery(hikariproxypreparedstatement.java)  org.hibernate.engine.jdbc.internal.resultsetreturnimpl.extract(resultsetreturnimpl.java:80)  org.hibernate.loader.loader.getresultset(loader.java:2065)  org.hibernate.loader.loader.executequerystatement(loader.java:1862)  org.hibernate.loader.loader.executequerystatement(loader.java:1838)  org.hibernate.loader.loader.doquery(loader.java:909)  org.hibernate.loader.loader.doqueryandinitializenonlazycollections(loader.java:354)  org.hibernate.loader.loader.dolist(loader.java:2553)  org.hibernate.loader.loader.dolist(loader.java:2539)  org.hibernate.loader.loader.listignorequerycache(loader.java:2369)  org.hibernate.loader.loader.list(loader.java:2364)  org.hibernate.loader.hql.queryloader.list(queryloader.java:496)  org.hibernate.hql.internal.ast.querytranslatorimpl.list(querytranslatorimpl.java:387)  org.hibernate.engine.query.spi.hqlqueryplan.performlist(hqlqueryplan.java:231)  org.hibernate.internal.sessionimpl.list(sessionimpl.java:1264)  org.hibernate.internal.queryimpl.list(queryimpl.java:103)  org.hibernate.jpa.internal.queryimpl.list(queryimpl.java:573)  org.hibernate.jpa.internal.queryimpl.getresultlist(queryimpl.java:449) 

query works fine, if remove setmaxresults(3) createquery.

any suggestions reason this.

the problem doesn't come question mark. hibernate inject parameter value when executing query.

moreover, shouldn't create query using string concatenation. should like

entitymanager.createquery("select s apps s s.id = :id")  .setparameter(":id", id)  .setmaxresults(3); 

i think problem table name test.app_table package name "test.". can try copy generated query , run directly in oracle see result , find out error.


Comments