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 <fyw...@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 <jewea...@us.ibm.com> wrote:
>
> > From: jim weaver <jewea...@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.
> >
> >
>
>
>
>

Reply via email to