[
https://issues.apache.org/jira/browse/OPENJPA-2861?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17315836#comment-17315836
]
ASF subversion and git services commented on OPENJPA-2861:
----------------------------------------------------------
Commit 0fc957a02be3c4ad2f862f1424e56717b0887917 in openjpa's branch
refs/heads/master from Mark Struberg
[ https://gitbox.apache.org/repos/asf?p=openjpa.git;h=0fc957a ]
OPENJPA-2861 fix Raw handling
Raw did loose the internal type. Once 'interned' to Raw the type was always
String.class.
And this broke quite a few return type situations in quite a nasty way.
> 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
> Priority: Major
> 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)