You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Tomohisa Igarashi <tm...@gmail.com> on 2017/03/14 10:58:00 UTC

custom query support for JPA producer Re: Camel JPA Name Query with Parameters

For anybody wants to try it before 2.19 release - it has been merged into upstream.

https://github.com/apache/camel/blob/master/components/camel-jpa/src/main/docs/jpa-component.adoc


On 03/11/2017 08:59 AM, Tomohisa Igarashi wrote:
> Hi,
>
> As you can see the parameter name starts with 'consumer', it's a consumer option. Right now JPA producer doesn't support named query yet. I'll work on that enhancement soon.
> https://issues.apache.org/jira/browse/CAMEL-10265
>
> Thanks,
> Tomo
>
> On 03/11/2017 08:24 AM, urwithsumit wrote:
>> Hi,
>>
>> I have been going through different post to see how i can use JPA component
>> to invole named query with parameter. I know from documentation  that we
>> need to add it to the registry. Right now i am stuck and not able tot find a
>> way to get the parameter to the registry. Below is the route i have. I need
>> help with the syntax to pass data to registry.
>>
>> I am using Java DSL with Spring Configuration for loading my Routes. I am
>> using Camel 2.18.2
>>
>> from("jetty:{{server.api.endpoint}}/file_monitor/ui/profile/delete?httpMethodRestrict=DELETE")
>>                 .setHeader(Exchange.CONTENT_TYPE,
>> constant("application/json")).onException(Throwable.class).handled(true).process(genericExceptionHandler)
>>
>> .end().validate(header(HeaderConstant.CLIENT_ID).isNotNull()).validate(header(HeaderConstant.FILE_NAME_PATTERN).isNotNull())
>>                 .process(new Processor() {
>>                     @Override
>>                     public void process(Exchange exchange) throws Exception {
>>                         Integer clientId =
>> exchange.getIn().getHeader(HeaderConstant.CLIENT_ID, Integer.class);
>>                         String fileNamPattern =
>> exchange.getIn().getHeader(HeaderConstant.FILE_NAME_PATTERN, String.class);
>>                         FileProfilePK deleteEntity = new FileProfilePK(clientId,
>> fileNamPattern);
>>
>>                         SimpleRegistry registry = new SimpleRegistry();
>>                         Map<String, Object> params = new HashMap<String, Object>();
>>                         params.put("delete_entity", deleteEntity);
>>                         registry.put("params", params);
>>
>>
>>
>>                         exchange.getIn().setBody(deleteEntity, FileProfilePK.class);
>>                     }
>>
>> }).to("jpa://deleteProfileId?consumer.namedQuery=deleteFileProfile&consumer.parameters=#params").marshal().json(JsonLibrary.Jackson);
>>
>>
>> In the entity class, the named Query is defined as -
>> @NamedQueries({ @NamedQuery(name = "deleteFileProfile", query = "DELETE from
>> FileProfileEntity fpe WHERE fpe.fileProfilePk = :delete_entity") })
>>
>>
>>
>> Thanks
>> Sumit
>>
>>
>>
>> --
>> View this message in context: http://camel.465427.n5.nabble.com/Camel-JPA-Name-Query-with-Parameters-tp5795279.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>