Mark Struberg created OPENJPA-2861: -------------------------------------- Summary: select sum(CASE x WHEN x THEN 1 ELSE 0 ) returns String instead of Long. Key: OPENJPA-2861 URL: https://issues.apache.org/jira/browse/OPENJPA-2861 Project: OpenJPA Issue Type: Bug Components: kernel Affects Versions: 3.1.2 Reporter: Mark Struberg Assignee: Mark Struberg Fix For: 3.1.3
It seems that a few operations in {{JDBCExpressionFactory}} often calls {{getLiteralRawString}} which destroys the information about any real types in a query and replaces it with a {{Raw}} which is always of type {{java.lang.String}}. This breaks the following query, which wrongly returns a string instead of a Long: {noformat} final TypedQuery<Long> q = em.createQuery("select SUM(CASE ae.stringVal WHEN 'bare' THEN 1 ELSE 0 END) from AggEntity AS ae", Long.class); final Long sumC = q.getSingleResult();{noformat} This only affects us since I fixed {{UnaryOp}} to not return the native JDBC vendor type of a given column but uses the {{val.getType()}} -- This message was sent by Atlassian Jira (v8.3.4#803005)