openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Fay Wang <fyw...@yahoo.com>
Subject Re: Can't query against a MappedSuperclass
Date Tue, 21 Apr 2009 17:10:03 GMT

Ya, this apparently is an inconsistency...

--- On Tue, 4/21/09, Jeremy Bauer <techhusky@gmail.com> wrote:

> From: Jeremy Bauer <techhusky@gmail.com>
> Subject: Re: Can't query against a MappedSuperclass
> To: users@openjpa.apache.org
> Date: Tuesday, April 21, 2009, 9:53 AM
> Hi Fay,
> 
> The JPA 1.0 and 2.0 draft spec clearly state that this
> isn't a requirement
> of JPA, but a note in the OpenJPA documentation (section
> 1.3) seems to
> indicate that OpenJPA does support it as an OpenJPA
> extension.
> 
> <openjpa doc>
> 
> Unlike true entities, you cannot query a mapped superclass,
> pass a mapped
> superclass instance to any EntityManager or Query methods,
> or declare a
> persistent relation with a mapped superclass target.
> 
> ...then
> Note
> 
> OpenJPA allows you to query on mapped superclasses. A query
> on a mapped
> superclass will return all matching subclass instances.
> OpenJPA also allows
> you to declare relations to mapped superclass types;
> however, you cannot
> query across these relations.
> </openjpa doc>
> 
> Using a mapped superclass with the em.find() operation over
> very simple
> entity subclasses seemed to work fine, but JPQL queries do
> not.
> 
> -Jeremy
> 
> On Tue, Apr 21, 2009 at 11:32 AM, Fay Wang <fyw300@yahoo.com>
> wrote:
> 
> >
> > Just found that in JPA 2.0 Proposed Final Draft (March
> 13, 2009):
> >
> > Spec 2.11.2:
> > A mapped superclass, unlike an entity, is not
> queryable and cannot be
> > passed as an argument to EntityManager or Query
> operations.
> >
> >
> > --- On Tue, 4/21/09, Jeremy Bauer <techhusky@gmail.com>
> wrote:
> >
> > > From: Jeremy Bauer <techhusky@gmail.com>
> > > Subject: Re: Can't query against a
> MappedSuperclass
> > > To: users@openjpa.apache.org
> > > Date: Tuesday, April 21, 2009, 8:52 AM
> > > Hi Jim,
> > >
> > > It looks like there are inconsistencies in the
> manual and
> > > provider.  I was
> > > able use the em.find() operation with a mapped
> superclass,
> > > but could not run
> > > a JPQL query which used one.  To perform the
> find
> > > operation, OpenJPA queried
> > > known entity subclasses of the mapped superclass
> until it
> > > found one that
> > > matched the specified ID.  I tried using
> mapped
> > > superclasses with the base
> > > 1.0 release to make sure this capability hadn't
> regressed
> > > and 1.0 behaved
> > > the same. So, it doesn't look like this ever
> worked with
> > > JPQL.
> > >
> > > Have you taken a look at using entity enheritance
> and the
> > > various entity
> > > inheritance strategies?  The TABLE_PER_CLASS
> strategy
> > > may map fairly well to
> > > a domain model that currently uses mapped
> superclass over
> > > multiple disparate
> > > entities.  It provides query capabilities
> over the
> > > superclass entity type.
> > >
> > > I've opened JIRA OPENJPA-1043[1] for this issue.
> > > Minimally, the docs should
> > > be updated to reflect that mapped superclasses
> are only
> > > supported on a find
> > > until such a time they can be supported in a
> query.
> > >
> > > -Jeremy
> > >
> > > [1] https://issues.apache.org/jira/browse/OPENJPA-1043
> > >
> > > On Mon, Apr 20, 2009 at 4:33 PM, Fay Wang <fyw300@yahoo.com>
> > > wrote:
> > >
> > > >
> > > > Hi,
> > > > According to openjpa manual:
> > > >
> > > > "Unlike true entities, you cannot query a
> mapped
> > > superclass"
> > > >
> > > >
> > > >
> > http://openjpa.apache.org/builds/latest/docs/manual/manual.html#jpa_overview_meta_embeddablesuper
> > > >
> > > >
> > > >
> > > > --- On Mon, 4/20/09, jim weaver <jeweaver@us.ibm.com>
> > > wrote:
> > > >
> > > > > From: jim weaver <jeweaver@us.ibm.com>
> > > > > Subject: Can't query against a
> MappedSuperclass
> > > > > To: users@openjpa.apache.org
> > > > > Date: Monday, April 20, 2009, 12:38 PM
> > > > >
> > > > > I have the following:
> > > > >
> > > > > @MappedSuperclass class A { }
> > > > > @Entity class B extends A { }
> > > > > @Entity class C extends A { }
> > > > >
> > > > > and I try to do this type of query:
> SELECT a FROM
> > > A a
> > > > >
> > > > > I receive error message "An error
> occurred while
> > > parsing
> > > > > the query filter
> > > > > "SELECT a FROM A a".  Error
> > > > > message:   The name "A"
> is not a
> > > recognized
> > > > > entity or identifier.  Perhaps you
> meant B,
> > > which is a
> > > > > close match.  Known
> > > > > entity names: [B, C]"
> > > > >
> > > > > A is defined in my persistence.xml and
> my tables
> > > do have
> > > > > the inherited
> > > > > fields from it so I'm pretty sure jpa
> is
> > > recognizing it.
> > > > >
> > > > > The OpenJPA doc says that the query is
> > > supported.....this
> > > > > is from the 1.2.0
> > > > > doc:
> > > > >
> > > > > Note
> > > > > OpenJPA allows you to query on mapped
> > > superclasses. A query
> > > > > on a mapped
> > > > > superclass will return all matching
> subclass
> > > instances.
> > > > >
> > > > >
> > > > > --
> > > > > View this message in context:
> > > >
> > http://n2.nabble.com/Can%27t-query-against-a-MappedSuperclass-tp2665700p2665700.html
> > > > > Sent from the OpenJPA Users mailing
> list archive
> > > at
> > > > > Nabble.com.
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > >
> >
> >
> >
> >
> 


      

Mime
View raw message