Here is what I have changed in camel-jpa protected QueryFactory createQueryFactory() { if (query != null) { return QueryBuilder.query(query); } else if (namedQuery != null) { return QueryBuilder.namedQuery(namedQuery); } else if (nativeQuery != null) { return QueryBuilder.nativeQuery(nativeQuery); } else { Class<?> entityType = endpoint.getEntityType();
if (entityType == null) { return null; } else { // Check if we have a property name on the @Entity annotation String name = getEntityName(entityType); if ( name != null ) { return QueryBuilder.query("select x from " + name + " x"); } else { // Remove package name of the entity to be conform with JPA 1.0 spec return QueryBuilder.query("select x from " + entityType.getSimpleName() + " x"); } } } } protected String getEntityName(Class<?> clazz) { Entity entity = clazz.getAnnotation(Entity.class); // Check if the property name has been defined for Entity annotation if ( ! entity.name().equals("") ) { return entity.name(); } else { return null; } } Charles Moulliard Senior Enterprise Architect Apache Camel Committer ***************************** blog : http://cmoulliard.blogspot.com twitter : http://twitter.com/cmoulliard Linkedlin : http://www.linkedin.com/in/charlesmoulliard Apache Camel Group : http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm On Wed, Dec 9, 2009 at 3:49 PM, Willem Jiang <willem.ji...@gmail.com> wrote: > > > Claus Ibsen wrote: > >> On Wed, Dec 9, 2009 at 3:26 PM, Charles Moulliard <cmoulli...@gmail.com> >> wrote: >> >>> Not really >>> >>> The following part of the JPA consumer code by example will use the >>> entityType defined at the endpoint and in consequence will generate the >>> wrong sql query. >>> >>> protected QueryFactory createQueryFactory() { >>> if (query != null) { >>> return QueryBuilder.query(query); >>> } else if (namedQuery != null) { >>> return QueryBuilder.namedQuery(namedQuery); >>> } else if (nativeQuery != null) { >>> return QueryBuilder.nativeQuery(nativeQuery); >>> } else { >>> Class<?> entityType = endpoint.getEntityType(); >>> if (entityType == null) { >>> return null; >>> } else { >>> return QueryBuilder.query("select x from " + >>> entityType.getName() + " x"); >>> } >>> } >>> } >>> >>> >> Try replacing entityType.getName() with entityType.getSimpleName() and >> add those annotations that willem suggested with the same simple name. >> Then I think it would NOT use the fully qual name. >> >> >> > +1, I just have the same idea as claus said when I was try to get my > daughter sleep :) > > > > Regards, >>> >>> Charles Moulliard >>> Senior Enterprise Architect >>> Apache Camel Committer >>> >>> ***************************** >>> blog : http://cmoulliard.blogspot.com >>> twitter : http://twitter.com/cmoulliard >>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard >>> >>> Apache Camel Group : >>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm >>> >>> >>> On Wed, Dec 9, 2009 at 3:22 PM, Willem Jiang <willem.ji...@gmail.com> >>> wrote: >>> >>> Hi Charles, >>>> >>>> Does the Entity annotation do the trick ? >>>> eg. >>>> >>>> @Entity(name="AtivityDefinitin") >>>> public class ActivityDefinition { >>>> ... >>>> } >>>> >>>> Willem >>>> >>>> >>>> Charles Moulliard wrote: >>>> >>>> done : https://issues.apache.org/activemq/browse/CAMEL-2273 >>>>> >>>>> >>>>> Charles Moulliard >>>>> Senior Enterprise Architect >>>>> Apache Camel Committer >>>>> >>>>> ***************************** >>>>> blog : http://cmoulliard.blogspot.com >>>>> twitter : http://twitter.com/cmoulliard >>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard >>>>> >>>>> Apache Camel Group : >>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm >>>>> >>>>> >>>>> On Wed, Dec 9, 2009 at 2:59 PM, Claus Ibsen <claus.ib...@gmail.com> >>>>> wrote: >>>>> >>>>> Hi Charles >>>>> >>>>>> You are welcome to create a JIRA ticket and try to fix that issue. >>>>>> >>>>>> I guess you can find out how to change those JPA queries to NOT use >>>>>> fully qual names but just the local name. >>>>>> >>>>>> >>>>>> On Wed, Dec 9, 2009 at 2:49 PM, Charles Moulliard < >>>>>> cmoulli...@gmail.com> >>>>>> wrote: >>>>>> >>>>>> Hi, >>>>>>> >>>>>>> I'm stuck with the following problem. The following components : >>>>>>> - camel-bam, >>>>>>> - camel-jpa, >>>>>>> - camel-example-etl, >>>>>>> - ... >>>>>>> >>>>>>> have been designed with JPA specification 1.0 but our implementation >>>>>>> uses >>>>>>> Hibernate JPA. Unfortunately, Hibernate has added some extensions. >>>>>>> >>>>>>> A good example is the fully qualified name which is used by camel jpa >>>>>>> consumer/producer or in all our select c from >>>>>>> Customer.getClass.getName. >>>>>>> >>>>>>> The JPA specification does not support this >>>>>>> >>>>>>> ******* >>>>>>> 4.3.1 Naming >>>>>>> >>>>>>> Entities are designated in query strings by their entity names. The >>>>>>> entity name is defined by the name >>>>>>> element of the Entity annotation (or the entity-name XML descriptor >>>>>>> element), and defaults to >>>>>>> the unqualified name of the entity class. Entity names are scoped >>>>>>> within the persistence unit and must be >>>>>>> unique within the persistence unit. >>>>>>> ****** >>>>>>> >>>>>>> and in consequence, switching from Hibernate to EclipseLink JPA, >>>>>>> OpenJPA, >>>>>>> ... is not possible today. >>>>>>> >>>>>>> Any suggestion are welcome to identify the best approach to improve >>>>>>> our >>>>>>> components ? >>>>>>> >>>>>>> Regards, >>>>>>> >>>>>>> Charles Moulliard >>>>>>> Senior Enterprise Architect >>>>>>> Apache Camel Committer >>>>>>> >>>>>>> ***************************** >>>>>>> blog : http://cmoulliard.blogspot.com >>>>>>> twitter : http://twitter.com/cmoulliard >>>>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard >>>>>>> >>>>>>> Apache Camel Group : >>>>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm >>>>>>> >>>>>>> >>>>>>> -- >>>>>> Claus Ibsen >>>>>> Apache Camel Committer >>>>>> >>>>>> Author of Camel in Action: http://www.manning.com/ibsen/ >>>>>> Open Source Integration: http://fusesource.com >>>>>> Blog: http://davsclaus.blogspot.com/ >>>>>> Twitter: http://twitter.com/davsclaus >>>>>> >>>>>> >>>>>> >> >> >> >