[ 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)