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
Post a Comment