java - build a org.eclipse.persistence.queries.ReportQuery from a javax.persistence.Query -


i trying use single named query both obtaining set of results , count available amount of data. have named jpql query:

@namedquery(name = "query.all.absences.by.name", query = "select absence a.name = :name")  

when obtain absences i'm invoking query this:

final query q = em.createnamedquery("query.all.absences.by.name"); q.setparameter("name","arandomabsencename"); //maxresults , firstresult coming parameters, computed in method q.setmaxresults(maxresults); q.setfirstresult(firstresult); 

q.getresultlist() gets me correct result set. far good.

now want use same named query execute count query. i'm doing following:

final query q = em.createnamedquery("query.all.absences.by.name"); q.setparameter("name","arandomabsencename"); q.sethint(queryhints.query_type, "org.eclipse.persistence.queries.reportquery"); final reportquery test = jpahelper.getreportquery(q); test.addcount(); test.setshouldreturnwithoutreportqueryresult(true); 

this approach works fine if named query not have parameters. parameters, if execute reportquery defined above have following exception:

exception [eclipselink-6094] (eclipse persistence services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.queryexception exception description: parameter name [name] in query's selection criteria not match parameter name defined in query. query: reportquery(referenceclass=absencecategory sql="select count(category_key) absence_category (category_key = ?)")     @ org.eclipse.persistence.exceptions.queryexception.parameternamemismatch(queryexception.java:1063)     @ org.eclipse.persistence.internal.expressions.parameterexpression.getvalue(parameterexpression.java:275)     @ org.eclipse.persistence.internal.databaseaccess.databasecall.translate(databasecall.java:1000)     @ org.eclipse.persistence.internal.queries.datasourcecallquerymechanism.executecall(datasourcecallquerymechanism.java:206)     @ org.eclipse.persistence.internal.queries.datasourcecallquerymechanism.executecall(datasourcecallquerymechanism.java:193)     @ org.eclipse.persistence.internal.queries.datasourcecallquerymechanism.executeselectcall(datasourcecallquerymechanism.java:264)     @ org.eclipse.persistence.internal.queries.datasourcecallquerymechanism.selectallrows(datasourcecallquerymechanism.java:646)     @ org.eclipse.persistence.internal.queries.expressionquerymechanism.selectallrowsfromtable(expressionquerymechanism.java:2611)     @ org.eclipse.persistence.internal.queries.expressionquerymechanism.selectallreportqueryrows(expressionquerymechanism.java:2554)     @ org.eclipse.persistence.queries.reportquery.executedatabasequery(reportquery.java:846)     @ org.eclipse.persistence.queries.databasequery.execute(databasequery.java:844)     @ org.eclipse.persistence.queries.objectlevelreadquery.execute(objectlevelreadquery.java:1040)     @ org.eclipse.persistence.queries.readallquery.execute(readallquery.java:392)     @ org.eclipse.persistence.queries.objectlevelreadquery.executeinunitofwork(objectlevelreadquery.java:1128)     @ org.eclipse.persistence.internal.sessions.unitofworkimpl.internalexecutequery(unitofworkimpl.java:2871)     @ org.eclipse.persistence.internal.sessions.abstractsession.executequery(abstractsession.java:1516)     @ org.eclipse.persistence.internal.sessions.abstractsession.executequery(abstractsession.java:1498)     @ org.eclipse.persistence.internal.sessions.abstractsession.executequery(abstractsession.java:1449) 

how else can possibly set parameters reportquery?

i'm using eclipselink 2.0.

how executing reportquery? need call session.executequery(query, arguments) , pass list of arguments (order same query.getarguments().

you can use jpaentitymanager createquery(databasequery) api convert reportquery jpa query, can set parameter jpa way.


Comments

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -