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! > >> > >> > > >
