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