You should use: SELECT COUNT(e) FROM Entity e;
On Thu, Feb 14, 2013 at 7:34 PM, Krishnaprasad Subbarao < krishnapras...@in.ibm.com> wrote: > Hello, > > I am trying to execute following JPQL query using OpenJPA > > select count(*) from AttributeBean Attribute where Attribute.Id = :$id$ > and Attribute.deleted=false > > Following exception is thrown wile executing this query, > > Caused by: > <openjpa-2.2.1-r422266:1396819 nonfatal user error> > org.apache.openjpa.persistence.ArgumentException: "Encountered "count ( *" > at character 8, but expected: ["(", "+", "-", ":", "?", "ABS", "AVG", > "CASE", "COALESCE", "CONCAT", "COUNT", "CURRENT_DATE", "CURRENT_TIME", > "CURRENT_TIMESTAMP", "DISTINCT", "ENTRY", "INDEX", "KEY", "LENGTH", > "LOCATE", "LOWER", "MAX", "MIN", "MOD", "NEW", "NULLIF", "OBJECT", "SIZE", > "SQRT", "SUBSTRING", "SUM", "TRIM", "TYPE", "UPPER", "VALUE", > <BOOLEAN_LITERAL>, <DATE_LITERAL>, <DECIMAL_LITERAL>, <IDENTIFIER>, > <INTEGER_LITERAL>, <STRING_LITERAL2>, <STRING_LITERAL>, > <TIMESTAMP_LITERAL>, <TIME_LITERAL>]." while parsing JPQL "select count(*) > from AttributeBean Attribute where Attribute.Id = :$id$ and > Attribute.deleted=false". See nested stack trace for original parse error. > at > org.apache.openjpa.kernel.jpql.JPQLParser.parse(JPQLParser.java:51) > at > > org.apache.openjpa.kernel.ExpressionStoreQuery.newCompilation(ExpressionStoreQuery.java:154) > at > org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:672) > at > > org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:654) > at > > org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:620) > at > org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:682) > at org.apache.openjpa.kernel.QueryImpl.compile(QueryImpl.java:589) > at > > org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.java:997) > at > > org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.java:979) > at > > org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.java:102) > at > > com.ibm.wdp.bsscfw.dataservice.dao.OpenJPADAOImpl.getEntity(OpenJPADAOImpl.java:171) > ... 40 more > Caused by: > <openjpa-2.2.1-r422266:1396819 nonfatal user error> > org.apache.openjpa.persistence.ArgumentException: Encountered "count ( *" > at character 8, but expected: ["(", "+", "-", ":", "?", "ABS", "AVG", > "CASE", "COALESCE", "CONCAT", "COUNT", "CURRENT_DATE", "CURRENT_TIME", > "CURRENT_TIMESTAMP", "DISTINCT", "ENTRY", "INDEX", "KEY", "LENGTH", > "LOCATE", "LOWER", "MAX", "MIN", "MOD", "NEW", "NULLIF", "OBJECT", "SIZE", > "SQRT", "SUBSTRING", "SUM", "TRIM", "TYPE", "UPPER", "VALUE", > <BOOLEAN_LITERAL>, <DATE_LITERAL>, <DECIMAL_LITERAL>, <IDENTIFIER>, > <INTEGER_LITERAL>, <STRING_LITERAL2>, <STRING_LITERAL>, > <TIMESTAMP_LITERAL>, <TIME_LITERAL>]. > at > org.apache.openjpa.kernel.jpql.JPQL.generateParseException(JPQL.java:13162) > at > org.apache.openjpa.kernel.jpql.JPQL.jj_consume_token(JPQL.java:13036) > at > org.apache.openjpa.kernel.jpql.JPQL.select_expression(JPQL.java:1001) > at > org.apache.openjpa.kernel.jpql.JPQL.select_expressions(JPQL.java:930) > at > org.apache.openjpa.kernel.jpql.JPQL.select_clause(JPQL.java:865) > at > org.apache.openjpa.kernel.jpql.JPQL.select_statement(JPQL.java:87) > at org.apache.openjpa.kernel.jpql.JPQL.parseQuery(JPQL.java:63) > at > > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.parse(JPQLExpressionBuilder.java:2401) > at > > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.<init>(JPQLExpressionBuilder.java:2388) > at > org.apache.openjpa.kernel.jpql.JPQLParser.parse(JPQLParser.java:49) > ... 50 more > > Is SELECT count(*) query syntax supported in OpenJPA? If yes what changes > should be done to above query to get it working? > > Thanks and Regards, > > KRISHNAPRASAD SUBBARAO > > > > > > -- WBR Maxim aka solomax