[ 
https://issues.apache.org/jira/browse/CAMEL-3635?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christian Müller resolved CAMEL-3635.
-------------------------------------

    Resolution: Duplicate

See CAMEL-3634

> JPA Native Query Returns Entity Instead of Array
> ------------------------------------------------
>
>                 Key: CAMEL-3635
>                 URL: https://issues.apache.org/jira/browse/CAMEL-3635
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-jpa
>         Environment: Hibernate 3.4.0.GA and DB2 9.7
>            Reporter: Mark Borner
>
> I'm in a bit of a pickle.  I'm trying to use a JPA endpoint as a consumer.
> I first started by using the "consumer.namedQuery" option to use Hibernate
> HQL from the entity's @NamedQuery annotation.  This worked well and the
> endpoint return the persistence entity.
> Now I've had to modify my SQL to use the fragment "FETCH FIRST 1 ROW ONLY".
> This fragment isn't supported by HQL - in fact there is no way that I've
> found to limit results using HQL (if there is one, please let me know!).
> So I've switched the JPA endpoint to use the "consumer.nativeQuery" (which
> uses the SQL specified on the nativeQuery parameter).  This works, but per
> the documentation, it doesn't return the persistence entity - it returns an
> array of String's representing the returned columns of the query.
> So I'm stuck - I can't use "consumer.namedQuery" and I can't use
> "consumer.nativeQuery" to retrieve the persistence entity.
> For reference, here is my native SQL:
> select * from GTWY.EXPORT_MESSAGE x where x.STATUS in ('RECEIVED', 'RERUN')
> and x.INTERNAL_ID = (select y.INTERNAL_ID from GTWY.EXPORT_MESSAGE y join
> GTWY.MESSAGE m on m.INTERNAL_ID = y.INTERNAL_ID where y.HISTORY_ID =
> x.HISTORY_ID order by m.CREATED ASC fetch first 1 row only)
> I'm wondering why the choice was made to return an array of String's when
> using the nativeQuery option?  In QueryBuilder.nativeQuery() it is calling
> entityManager.createNativeQuery(nativeQuery).  If it called
> EntityManager.createNativeQuery(String sqlString, *Class resultClass*) or
> even EntityManager.createNativeQuery(String sqlString, *String
> resultSetMapping*) we could return the actually persistence entity,
> correct?  Would you consider making this enhancement?

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to