[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] [JPA Criteria Api] CriteriaBuilder sum on two different root fields
|
Seems to be a bug, please log a bug for this and vote for it.
As a workaround you may be able to use JPQL, an Expression query, or native
SQL query.
MarcNuri wrote:
>
> Hello
> I've found a problem today while trying to add two fields from different
> Roots.
> ...
> CriteriaQuery cq = ...;
> Root<Entity1> from1 = cq.from(Entity1.class)
> Root<Entity2> from2 = cq.from(Entity2.class)
> Expression x = cq.sum(from1.get(Entity1_.attr11),
> from1.get(Entity1_.attr12));
> x = cq.sum(x, from2.get(Entity2_.attr21);
> cq.multiselect(from1, from2, x);
> ...
> When running the query I get the following stacktrace which doesn't happen
> if I only put in the sum expression attributes from just one entity.
>
> Exception Description: Invalid query key [attr21] in expression.
> Query: ReportQuery(referenceClass=PaduaExpedicion )
> at
> org.eclipse.persistence.exceptions.QueryException.invalidQueryKeyInExpression(QueryException.java:657)
> at
> org.eclipse.persistence.internal.expressions.QueryKeyExpression.validateNode(QueryKeyExpression.java:847)
> at
> org.eclipse.persistence.expressions.Expression.normalize(Expression.java:2962)
> at
> org.eclipse.persistence.internal.expressions.DataExpression.normalize(DataExpression.java:342)
> at
> org.eclipse.persistence.internal.expressions.QueryKeyExpression.normalize(QueryKeyExpression.java:612)
> at
> org.eclipse.persistence.internal.expressions.QueryKeyExpression.normalize(QueryKeyExpression.java:599)
> at
> org.eclipse.persistence.internal.expressions.FunctionExpression.normalize(FunctionExpression.java:385)
> at
> org.eclipse.persistence.internal.expressions.FunctionExpression.normalize(FunctionExpression.java:385)
> at
> org.eclipse.persistence.internal.expressions.FunctionExpression.normalize(FunctionExpression.java:385)
> at
> org.eclipse.persistence.internal.expressions.FunctionExpression.normalize(FunctionExpression.java:385)
> at
> org.eclipse.persistence.internal.expressions.FunctionExpression.normalize(FunctionExpression.java:385)
> at
> org.eclipse.persistence.internal.expressions.FunctionExpression.normalize(FunctionExpression.java:385)
> at
> org.eclipse.persistence.internal.expressions.SQLSelectStatement.normalize(SQLSelectStatement.java:1311)
> at
> org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.buildReportQuerySelectStatement(ExpressionQueryMechanism.java:560)
> at
> org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.buildReportQuerySelectStatement(ExpressionQueryMechanism.java:506)
> at
> org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.prepareReportQuerySelectAllRows(ExpressionQueryMechanism.java:1542)
> at
> org.eclipse.persistence.queries.ReportQuery.prepareSelectAllRows(ReportQuery.java:1298)
> at
> org.eclipse.persistence.queries.ReadAllQuery.prepare(ReadAllQuery.java:628)
> at
> org.eclipse.persistence.queries.ReportQuery.prepare(ReportQuery.java:1047)
> at
> org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:577)
> at
> org.eclipse.persistence.queries.ObjectLevelReadQuery.checkPrepare(ObjectLevelReadQuery.java:824)
> at
> org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:537)
> at
> org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:778)
> at
> org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1040)
> at
> org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:383)
> at
> org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1126)
> at
> org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2842)
> at
> org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1521)
> at
> org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1503)
> at
> org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1477)
> at
> org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:484)
> at
> org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultList(EJBQueryImpl.java:741)
>
> --
> Marc Nuri
>
-----
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland
http://www.eclipse.org/eclipselink/
EclipseLink , http://www.oracle.com/technology/products/ias/toplink/
TopLink
Wiki: http://wiki.eclipse.org/EclipseLink EclipseLink ,
http://wiki.oracle.com/page/TopLink TopLink
Forums: http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink ,
http://www.nabble.com/EclipseLink-f26430.html EclipseLink
Book: http://en.wikibooks.org/wiki/Java_Persistence Java Persistence
Blog: http://java-persistence-performance.blogspot.com/ Java Persistence
Performance
--
View this message in context: http://old.nabble.com/-JPA-Criteria-Api--CriteriaBuilder-sum-on-two-different-root-fields-tp31163028p31229377.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.