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)