Hi Jody,

Using @MappedSuperclass may be "more correct" for this scenario, but I don't
think it's a requirement in general.

I'm not sure why introducing an abstract class in the hierarchy would
require a reset of the inheritance strategy. Abstract classes cannot have an
instance but you can query across their subclasses.

-mike

On Wed, May 20, 2009 at 7:46 PM, Jody Grassel <[email protected]> wrote:

> Looking at your data model, you're intending the class AbstractFoo to
> define
> new persistent types without AbstractFoo having a table mapping.  Instead
> of
> annotating the abstract class with the @Entity annotation, I think you
> should use the @MappedSuperclass annotation.
> What I think should be determined is if an abstract class annotated with
> @Entity should "reset" the inheritance hierarchy (as the only reason for
> the existence of such a definition would be to provide an inheritance base,
> abstract types can't have their own instance, so they must be extended by
> another class.) or throw an error during enhancement/runtime.
>
> On Wed, May 20, 2009 at 6:19 PM, Serge Bogatyrev
> <[email protected]>wrote:
>
> > I've created an issue: OPENJPA-1096 <
> > https://issues.apache.org/jira/browse/OPENJPA-1096>
> >
> >
> > Craig L Russell wrote:
> >
> >> Hi Serge,
> >>
> >> Could you please open a JIRA so we can track this issue?
> >>
> >> Thanks,
> >>
> >> Craig
> >>
> >> On May 11, 2009, at 11:03 AM, Serge Bogatyrev wrote:
> >>
> >>  This mixed strategy can be very usefull. But obviously there is
> >>> uncompatibility with standards. I think that additional annotation can
> be
> >>> used to change standard behaviour. So, at this example strict
> >>> TABLE_PER_CLASS strategy should work without any additional
> annotations. And
> >>> to get the mixed strategy we shoud add @Inheritance annotation to some
> class
> >>> in hierarchy (e.g. AbsractFoo).
> >>>
> >>> Pinaki Poddar:
> >>>
> >>>> You are right. OpenJPA should use the inheritance strategy used at the
> >>>> root
> >>>> of the hierarchy throughout the derived tree. The extra strategy
> >>>> specification perhaps is resulting from the facility to support mixed
> >>>> strategy. Needs further investigation...
> >>>>
> >>>>
> >>>> hallmit wrote:
> >>>>
> >>>>  Thanks guys, I put
> >>>>> @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
> >>>>> to AbstractFoo and now it works fine...I have also put
> >>>>> @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) to the first
> >>>>> concrete class of my class hierarchy otherwise the SINGLE_TABLE
> >>>>> strategy
> >>>>> is used for the branch.    I thought it was sufficient to annotate
> the
> >>>>> root class with
> >>>>> TABLE_PER_CLASS and so all classes in the hierarchy would have the
> same
> >>>>> strategy...apparently not for OpenJPA...
> >>>>>
> >>>>> JSR 220 (JPA-1.0) spec talk :
> >>>>>
> >>>>> "The Inheritance annotation defines the inheritance strategy to be
> used
> >>>>> for an entity class hierarchy.
> >>>>> It is specified on the entity class that is the root of the entity
> >>>>> class
> >>>>> hierarchy."
> >>>>> ...
> >>>>>    In any case thank you very much for your help!
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>> -----
> >>>> Pinaki Poddar                      http://ppoddar.blogspot.com/
> >>>>
> >>>> http://www.linkedin.com/in/pinakipoddar
> >>>> OpenJPA PMC Member/Committer
> >>>> JPA Expert Group Member
> >>>>
> >>>>
> >>>
> >> Craig L Russell
> >> Architect, Sun Java Enterprise System http://db.apache.org/jdo
> >> 408 276-5638 mailto:[email protected]
> >> P.S. A good JDO? O, Gasp!
> >>
> >>
> >
>

Reply via email to