[ 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