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

design - Custom Styling Qt Quick Controls -

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