java - Native query works sqlDeveloper but fails using hibernate -
i have query want run using hibernate native sqlquery
when run query using sql developer works fine when hibernate run ,it throws exception
java.sql.sqlexception: invalid column name @ oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:112) ~[ojdbc14-10.2.0.4.0.jar:oracle jdbc driver version - "10.2.0.4.0"] @ oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:146) ~[ojdbc14-10.2.0.4.0.jar:oracle jdbc driver version - "10.2.0.4.0"] @ oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:208) ~[ojdbc14-10.2.0.4.0.jar:oracle jdbc driver version - "10.2.0.4.0"] @ oracle.jdbc.driver.oraclestatement.getcolumnindex(oraclestatement.java:3319) ~[ojdbc14-10.2.0.4.0.jar:oracle jdbc driver version - "10.2.0.4.0"] @ oracle.jdbc.driver.oracleresultsetimpl.findcolumn(oracleresultsetimpl.java:1926) ~[ojdbc14-10.2.0.4.0.jar:oracle jdbc driver version - "10.2.0.4.0"] @ oracle.jdbc.driver.oracleresultset.getlong(oracleresultset.java:1575) ~[ojdbc14-10.2.0.4.0.jar:oracle jdbc driver version - "10.2.0.4.0"] @ org.hibernate.type.descriptor.sql.biginttypedescriptor$2.doextract(biginttypedescriptor.java:63) ~[hibernate-core-5.0.12.final.jar:5.0.12.final] @ org.hibernate.type.descriptor.sql.basicextractor.extract(basicextractor.java:47) ~[hibernate-core-5.0.12.final.jar:5.0.12.final] @ org.hibernate.type.abstractstandardbasictype.nullsafeget(abstractstandardbasictype.java:238) ~[hibernate-core-5.0.12.final.jar:5.0.12.final] @ org.hibernate.type.abstractstandardbasictype.nullsafeget(abstractstandardbasictype.java:234) ~[hibernate-core-5.0.12.final.jar:5.0.12.final] @ org.hibernate.type.abstractstandardbasictype.nullsafeget(abstractstandardbasictype.java:224) ~[hibernate-core-5.0.12.final.jar:5.0.12.final] @ org.hibernate.type.abstractstandardbasictype.hydrate(abstractstandardbasictype.java:300) ~[hibernate-core-5.0.12.final.jar:5.0.12.final] @ org.hibernate.loader.loader.extractkeysfromresultset(loader.java:789) ~[hibernate-core-5.0.12.final.jar:5.0.12.final] @ org.hibernate.loader.loader.getrowfromresultset(loader.java:714) ~[hibernate-core-5.0.12.final.jar:5.0.12.final] @ org.hibernate.loader.loader.processresultset(loader.java:972) ~[hibernate-core-5.0.12.final.jar:5.0.12.final] @ org.hibernate.loader.loader.doquery(loader.java:930) ~[hibernate-core-5.0.12.final.jar:5.0.12.final]
this query hibernate logs :
hibernate: select o.guichet,count(*) operations o, guichet g, centre c date_operations between trunc(sysdate,'mm') , add_months(trunc(sysdate,'mm'),1) , c.centre_id=? , c.centre_id=g.centre_id , g.guichet_id=o.guichet group o.guichet
here's table class definition :
@entity @table(name = "operations") public class operations implements serializable { private static final long serialversionuid = 1l; @generatedvalue(strategy= generationtype.auto) @id private long operationsid; private date dateoperations; @manytoone() @joincolumn(name = "guichet", referencedcolumnname = "guichetid") private guichet guichet;
edit : here's code im defining method , using it
@repository public interface operationsrepository extends crudrepository<operations, long> { @query(value="select o.guichet,count(*) operations o, guichet g, centre c date_operations between trunc(sysdate,'mm') , add_months(trunc(sysdate,'mm'),1) " + "and c.centre_id=?1 , c.centre_id=g.centre_id , g.guichet_id=o.guichet " + "group o.guichet",nativequery=true) iterable<operations> operationsstat( long centreid);
using method :
@override public iterable<operations> operationsstat(long centreid) { return operationsrepository.operationsstat(centreid); } @getmapping(value="/statistique") @responsebody() iterable<operations> dostatistique() { return operationsserviceimpl.operationsstat(new long(selectedcentre)); }
code after changing return type :
@repository public interface operationsrepository extends crudrepository<operations, long> { @query(value="select o.guichet,count(*) operations o, guichet g, centre c date_operations between trunc(sysdate,'mm') , add_months(trunc(sysdate,'mm'),1) " + "and c.centre_id=?1 , c.centre_id=g.centre_id , g.guichet_id=o.guichet " + "group o.guichet",nativequery=true) iterable<object> operationsstat( long centreid);
then :
@override public iterable<object> operationsstat(long centreid) { return operationsrepository.operationsstat(centreid); } @getmapping(value="/statistique") @responsebody() iterable<object> dostatistique() { return operationsserviceimpl.operationsstat(new long(selectedcentre)); }
Comments
Post a Comment