You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by Krishnaprasad Subbarao <kr...@in.ibm.com> on 2013/02/14 13:34:45 UTC

Is SELECT count(*) query syntax supported in OpenJPA

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






Re: Is SELECT count(*) query syntax supported in OpenJPA

Posted by Maxim Solodovnik <so...@gmail.com>.
You should use:
SELECT COUNT(e) FROM Entity e;


On Thu, Feb 14, 2013 at 7:34 PM, Krishnaprasad Subbarao <
krishnaprasads@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

Re: Is SELECT count(*) query syntax supported in OpenJPA

Posted by Maxim Solodovnik <so...@gmail.com>.
You should use:
SELECT COUNT(e) FROM Entity e;


On Thu, Feb 14, 2013 at 7:34 PM, Krishnaprasad Subbarao <
krishnaprasads@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