openjpa-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mik...@apache.org
Subject svn commit: r681396 [1/2] - in /openjpa/branches/1.2.x: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/ openjpa-persistence-jdbc/src/test/java/org/apache/openjp...
Date Thu, 31 Jul 2008 15:36:01 GMT
Author: mikedd
Date: Thu Jul 31 08:35:59 2008
New Revision: 681396

URL: http://svn.apache.org/viewvc?rev=681396&view=rev
Log:
OPENJPA-670 committing patch provided by Jeremy Bauer

Added:
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestDefaultInheritanceStrategy.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/AbstractClass.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass2.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass3.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass4.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass5.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass6.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ImplClassA.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ManagedIface.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ManagedIface2.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MappedSuper.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass2.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass3.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassA.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassB.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassC.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassD.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassE.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassF.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassG.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassH.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassI.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassJ.java   (with props)
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassK.java   (with props)
Modified:
    openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java
    openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java

Modified: openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java?rev=681396&r1=681395&r2=681396&view=diff
==============================================================================
--- openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java (original)
+++ openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java Thu Jul 31 08:35:59 2008
@@ -24,6 +24,7 @@
 import java.sql.Types;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -312,6 +313,20 @@
         ClassMapping sup = mapping.getPCSuperclassMapping();
         if (sup != null && (mapping.getResolve() & MODE_MAPPING) != 0)
             return;
+        
+        // if this mapping is not for a managed interface, ensure that if 
+        // we have an inheritance hierarchy there is a default strategy
+        // applied to the root class
+        if (!mapping.getDescribedType().isInterface() &&
+            !mapping.isEmbeddedOnly()) {
+            // if an inheritance strategy has not been set on this mapping
+            // determine if needs one and if so, set it
+            if (!hasInheritanceStrategy(mapping)) {
+                ClassMapping baseMapping = findBaseClassMapping(mapping); 
+                if (baseMapping != null)
+                    setDefaultInheritanceStrategy(baseMapping);
+            }            
+        }
 
         // define superclass fields after mapping class, so we can tell whether
         // the class is mapped and needs to redefine abstract superclass fields
@@ -1256,4 +1271,77 @@
             ((Configurable) _schema).endConfiguration();
         }            
     }
+    
+    /**
+     * Finds the base class mapping for the specified mapping.  Loads all
+     * persistent types if necessary, since all persistent subclasses of this
+     * mapping may not have been resolved before this method is called.
+     */
+    protected ClassMapping findBaseClassMapping(ClassMapping mapping) {        
+        ClassMapping baseMapping = null;
+        ClassMapping sup = mapping.getPCSuperclassMapping();
+        if (sup == null) {
+            // no superclass metadata was provided.  check to see if this class
+            // has any persistent subclasses.
+            if (mapping.getPCSubclasses().length > 0)
+                baseMapping = mapping;
+            else {
+                // persistent subclasses may not have been resolved yet.  
+                // run through the persistent types to see if any of them 
+                // or their superclass is a subclass of this class.
+                Collection classes = loadPersistentTypes(false, 
+                        mapping.getEnvClassLoader());
+                Class cls;
+                for (Iterator itr = classes.iterator(); itr.hasNext();) {
+                    cls = (Class) itr.next();
+                    Class supcl = cls.getSuperclass();
+                    while (supcl != null && 
+                           !supcl.getClass().equals(java.lang.Object.class)) {
+                        if (!supcl.isInterface() &&
+                            supcl.equals(mapping.getDescribedType())) {
+                            baseMapping = mapping;    
+                            break;
+                        }
+                        supcl = supcl.getSuperclass();
+                    }
+                    if (baseMapping != null) break;
+                }
+            }
+        } else if (!sup.getDescribedType().isInterface()) {
+            // if the superclass is not a managed interface, find the root
+            // superclass and get its mapping info
+            ClassMapping supcm = sup;
+            while (supcm != null && 
+                    !supcm.getDescribedType().isInterface() &&
+                    !supcm.isEmbeddedOnly()) {
+                ClassMapping supcm2 = supcm.getPCSuperclassMapping();
+                if (supcm2 == null)
+                    baseMapping = supcm;
+                supcm = supcm2;
+            }
+        }
+        return baseMapping;
+    }
+   
+    /**
+     * If an inheritance strategy has not been set on this mapping, set it
+     * to the default (flat).  This method should be called before strategies
+     * are created for the specified mapping.
+     */
+    protected void setDefaultInheritanceStrategy(ClassMapping mapping) {
+        ClassMappingInfo info = mapping.getMappingInfo();
+        if (info != null && info.getHierarchyStrategy() == null)
+            info.setHierarchyStrategy(FlatClassStrategy.ALIAS);        
+    } 
+    
+    /**
+     * Determines whether an inhertance strategy has been set on the
+     * specified mapping.
+     */
+    protected boolean hasInheritanceStrategy(ClassMapping mapping) {
+        ClassMappingInfo info = mapping.getMappingInfo();
+        if (info != null && info.getHierarchyStrategy() != null)
+            return true;
+        return false;        
+    }
 }

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestDefaultInheritanceStrategy.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestDefaultInheritanceStrategy.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestDefaultInheritanceStrategy.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestDefaultInheritanceStrategy.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,622 @@
+package org.apache.openjpa.persistence.inheritance;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.apache.openjpa.jdbc.meta.ClassMapping;
+import org.apache.openjpa.jdbc.meta.Discriminator;
+import org.apache.openjpa.jdbc.schema.Column;
+import org.apache.openjpa.persistence.OpenJPAEntityManager;
+import org.apache.openjpa.persistence.inheritance.entity.AbstractClass;
+import org.apache.openjpa.persistence.inheritance.entity.BaseClass;
+import org.apache.openjpa.persistence.inheritance.entity.BaseClass2;
+import org.apache.openjpa.persistence.inheritance.entity.BaseClass3;
+import org.apache.openjpa.persistence.inheritance.entity.BaseClass4;
+import org.apache.openjpa.persistence.inheritance.entity.BaseClass5;
+import org.apache.openjpa.persistence.inheritance.entity.BaseClass6;
+import org.apache.openjpa.persistence.inheritance.entity.ManagedIface;
+import org.apache.openjpa.persistence.inheritance.entity.ManagedIface2;
+import org.apache.openjpa.persistence.inheritance.entity.MappedSuper;
+import org.apache.openjpa.persistence.inheritance.entity.MidClass;
+import org.apache.openjpa.persistence.inheritance.entity.MidClass2;
+import org.apache.openjpa.persistence.inheritance.entity.MidClass3;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassA;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassB;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassC;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassD;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassE;
+import org.apache.openjpa.persistence.inheritance.entity.ImplClassA;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassF;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassG;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassH;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassI;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassJ;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassK;
+import org.apache.openjpa.persistence.test.SingleEMFTestCase;
+
+/**
+ * This test verifies that OpenJPA uses a single-table inheritance
+ * strategy and default discriminator column if no inheritance strategy 
+ * is defined.
+ * 
+ * OpenJPA JIRA: {@link http://issues.apache.org/jira/browse/OPENJPA-670}
+
+ * @author Jeremy Bauer
+ *
+ */
+public class TestDefaultInheritanceStrategy 
+    extends SingleEMFTestCase {
+    
+    public void setUp() {
+        setUp(BaseClass.class, SubclassA.class, SubclassB.class,
+            SubclassC.class, MappedSuper.class, SubclassD.class,
+            BaseClass2.class, MidClass.class, SubclassE.class,
+            ManagedIface.class, ImplClassA.class,
+            ManagedIface2.class, BaseClass3.class, SubclassF.class,
+            BaseClass4.class, SubclassG.class,
+            BaseClass5.class, MidClass2.class, SubclassH.class,
+            AbstractClass.class, SubclassI.class, SubclassJ.class,
+            BaseClass6.class, SubclassK.class);
+    }
+
+    private Class[] classArray(Class... classes) {
+        return classes;
+    }
+    
+    /**
+     * This variation tests a default simple class hierarchy with no inheritance
+     * or discriminator column annotations defined.  
+     */
+    public void testSimpleDefaultInheritance() {
+        EntityManager em = emf.createEntityManager();
+        
+        // Create some entities
+        SubclassA sca = new SubclassA();
+        sca.setId(0);
+        sca.setName("SubclassABaseClassName0");
+        sca.setClassAName("SubclassAName0");
+
+        SubclassA sca2 = new SubclassA();
+        sca2.setId(1);
+        sca2.setName("SubclassABaseClassName1");
+        sca2.setClassAName("SubclassAName1");
+
+        SubclassB scb = new SubclassB();
+        scb.setId(2);
+        scb.setName("SubclassBBaseClassName");
+        scb.setClassBName("SubclassBName");
+
+        BaseClass b = new BaseClass();
+        b.setName("BaseClassName");
+        b.setId(3);
+
+        em.getTransaction().begin();
+        em.persist(sca);
+        em.persist(sca2);
+        em.persist(scb);
+        em.persist(b);
+        em.getTransaction().commit();
+
+        em.clear();
+        
+        verifyDtypeColumnEntriesAndMapping(em, "BASECLASS", 4, BaseClass.class);
+                
+        verifyInheritanceQueryResult(em, "SubclassA", 
+            classArray(SubclassA.class), 0, 1);
+
+        verifyInheritanceQueryResult(em, "SubclassB", 
+            classArray(SubclassB.class), 2);
+
+        verifyInheritanceQueryResult(em, "BaseClass", 
+            classArray(BaseClass.class), 0, 1, 2, 3);
+        
+        em.close();
+    }
+
+    /**
+     * This variation ensures that a mapped superclass does not cause the
+     * production of a discriminator column.
+     */
+    public void testMappedSuperclass() {
+        EntityManager em = emf.createEntityManager();
+
+        // Add two entities, each extending the same mapped interface
+        em.getTransaction().begin();
+        SubclassC sc = new SubclassC();
+        sc.setId(0);
+        sc.setName("SubclassCMappedSuperName");
+        sc.setClassCName("SubclassCName");
+
+        SubclassD sd = new SubclassD();
+        sd.setId(1);
+        sd.setName("SubclassDMappedSuperName");
+        sd.setClassDName("SubclassDName");
+        
+        em.persist(sc);
+        em.persist(sd);
+        em.getTransaction().commit();
+        
+        em.clear();
+                
+        // The subclasses should not contain a discriminator column
+        verifyNoDypeColumn(em, "SubclassC");
+        verifyNoDypeColumn(em, "SubclassD");
+
+        // Query the subclass entities.  Make sure the counts are correct and
+        // the result is castable to the mapped sc.
+        verifyInheritanceQueryResult(em, "SubclassC", 
+                classArray(SubclassC.class, MappedSuper.class), 0);
+
+        verifyInheritanceQueryResult(em, "SubclassD", 
+                classArray(SubclassD.class, MappedSuper.class), 1);
+                
+        em.close();
+    }
+
+    /**
+     * This variation ensures that a 3-level inheritance hierarchy uses 
+     * a discriminator column at the root class level.
+     */
+    public void testTwoLevelInheritance() {
+        EntityManager em = emf.createEntityManager();
+
+        // Add two entities, each extending the same mapped interface
+        em.getTransaction().begin();
+        SubclassE sc = new SubclassE();
+        sc.setId(0);
+        sc.setName("SubclassEBaseClassName");
+        sc.setMidClassName("SubclassEMidClassName");
+        sc.setClassEName("SubclassCName");
+
+        MidClass mc = new MidClass();
+        mc.setId(1);
+        mc.setName("MidClassBaseClassName");
+        mc.setMidClassName("MidClassName");
+
+        BaseClass2 b2 = new BaseClass2();
+        b2.setName("BaseClass2Name");
+        b2.setId(2);
+        
+        em.persist(sc);
+        em.persist(mc);
+        em.persist(b2);
+        em.getTransaction().commit();
+        
+        em.clear();
+
+        // Verify that baseclass2 contains a discriminator column
+        verifyDtypeColumnEntriesAndMapping(em, "BASECLASS2", 3, 
+                BaseClass2.class);
+        
+        // Verify that the subclass tables do not contain a discriminator column
+        verifyNoDypeColumn(em, "MidClass");
+        verifyNoDypeColumn(em, "SubclassE");
+
+        // Query the subclass tables.  Make sure the counts are correct and
+        // the result is castable to the mapped sc.
+        verifyInheritanceQueryResult(em, "SubclassE", 
+                classArray(SubclassE.class, MidClass.class, BaseClass2.class),
+                0);
+
+        verifyInheritanceQueryResult(em, "MidClass", 
+                classArray(MidClass.class), 0, 1);
+
+        verifyInheritanceQueryResult(em, "BaseClass2", 
+                classArray(BaseClass2.class), 0, 1, 2);
+
+        em.close();
+    }
+
+    /**
+     * This variation verifies that an entity with a managed interface
+     * does not use a discriminator column.
+     */
+    public void testManagedInterface() {
+        OpenJPAEntityManager em = emf.createEntityManager();
+
+        // Add some entities
+        em.getTransaction().begin();
+        ManagedIface mif = em.createInstance(ManagedIface.class);
+        mif.setIntFieldSup(10);
+                
+        ImplClassA ica = new ImplClassA();
+        ica.setImplClassAName("ImplClassAName");
+        ica.setIntFieldSup(11);
+        
+        em.persist(mif);
+        em.persist(ica);        
+        em.getTransaction().commit();
+
+        em.clear();
+
+        // Verify that the iface table does not contain a discriminator column
+        verifyNoDypeColumn(em, "ManagedIface");
+
+        // Verify that the impl table does not contain a discriminator column
+        verifyNoDypeColumn(em, "ImplClassA");
+        
+        // Query the subclass tables.  Make sure the counts are correct and
+        // the result is castable to the entity and interface types.
+        verifyInheritanceQueryResult(em, "ImplClassA", 
+                classArray(ImplClassA.class, ManagedIface.class), ica.getId());
+
+        // Query the interface2 table.  Make sure the count is correct and
+        // the result is castable to the interface type.
+        verifyInheritanceQueryResult(em, "ManagedIface", 
+                classArray(ManagedIface.class), mif.getId(),
+                ica.getId());
+        
+        em.close();
+    }
+
+    /**
+     * This variation verifies that an entity with managed interface
+     * and a superclass DOES use a discriminator column.
+     */
+    public void testManagedInterfaceAndBase() {
+        OpenJPAEntityManager em = emf.createEntityManager();
+
+        // Add some entities
+        em.getTransaction().begin();
+        ManagedIface2 mif2 = em.createInstance(ManagedIface2.class);
+        mif2.setIntFieldSup(12);
+                
+        SubclassF scf = new SubclassF();
+        scf.setClassFName("SubclassFName");
+        scf.setIntFieldSup(13);
+
+        BaseClass3 bc3 = new BaseClass3();
+        bc3.setName("BaseClass3");
+
+        em.persist(mif2);
+        em.persist(scf);  
+        em.persist(bc3);
+        em.getTransaction().commit();
+
+        em.clear();
+
+        // Verify that the iface table does not contain a discriminator column
+        verifyNoDypeColumn(em, "ManagedIface2");
+
+        // Verify that the subclass table does not contain a discriminator column
+        verifyNoDypeColumn(em, "SubclassF");
+
+        // Verify that the base class does contain a discriminator column
+        verifyDtypeColumnEntriesAndMapping(em, "BASECLASS3", 2, 
+            BaseClass3.class);
+
+        // Query the subclass table.  Make sure the counts are correct and
+        // the result is castable to the entity and interface types.
+        verifyInheritanceQueryResult(em, "SubclassF", 
+            classArray(SubclassF.class, ManagedIface2.class, BaseClass3.class),
+            scf.getId());
+        
+        // Query the base class table.  Make sure the counts are correct and
+        // the result is castable to the entity and interface types.
+        verifyInheritanceQueryResult(em, "BaseClass3", 
+            classArray(BaseClass3.class),
+            scf.getId(), bc3.getId());
+
+        // Query the interface2 table.  Make sure the count is correct and
+        // the result is castable to the interface type.
+        verifyInheritanceQueryResult(em, "ManagedIface2", 
+                classArray(ManagedIface2.class),
+                scf.getId(), mif2.getId());        
+        em.close();
+    }
+    
+    /**
+     * This variation tests a default simple class hierarchy with a inheritance
+     * annotation defined on the subclass.  
+     */
+    public void testSubclassSpecifiedInheritance() {
+        EntityManager em = emf.createEntityManager();
+        
+        // Create some entities
+        SubclassG scg = new SubclassG();
+        scg.setId(0);
+        scg.setName("SubclassGBaseClass4Name");
+        scg.setClassGName("SubclassGName");
+
+        BaseClass4 b = new BaseClass4();
+        b.setName("BaseClass4Name");
+        b.setId(1);
+
+        em.getTransaction().begin();
+        em.persist(scg);
+        em.persist(b);
+        em.getTransaction().commit();
+
+        em.clear();
+        
+        verifyDtypeColumnEntriesAndMapping(em, "BASECLASS4", 2, 
+            BaseClass4.class);
+
+        // Verify that the subclass table does not contain a discriminator column
+        verifyNoDypeColumn(em, "SubclassG");
+        
+        // Run queries for each type. They should return only those values
+        // which match their respective types.  This will not work for single
+        // table inheritance unless a discriminator column is defined.
+        verifyInheritanceQueryResult(em, "SubclassG", 
+            classArray(SubclassG.class, BaseClass4.class), 0);
+
+        verifyInheritanceQueryResult(em, "BaseClass4", 
+                classArray(BaseClass4.class), 0, 1);
+        
+        em.close();
+    }    
+    
+    /**
+     * This variation tests a default inheritance hierarchy with circular
+     * relationships:
+     *    BaseClass5 has rel to SubclassH
+     *    MidClass2 extends BaseClass5 inherits rel to SubclassH
+     *    SubClassH extends MidClass2 has rel to BaseClass5
+     */    
+    public void testCircularInheritedRelationships() {
+        EntityManager em = emf.createEntityManager();
+
+        // Create and persist some related & inherited entities
+        SubclassH sch = new SubclassH();
+        sch.setId(1);
+        sch.setClassHName("SubclassHName");
+        sch.setName("SubclassHBaseClass5Name");
+        sch.setMidClass2Name("SubclassHMidClass2Name");
+    
+        BaseClass5 bc5 = new BaseClass5();
+        bc5.setId(2);
+        bc5.setName("BaseClass5Name");
+        bc5.setSubclassh(sch);
+        
+        sch.setBaseclass5(bc5);
+        
+        MidClass2 mc2 = new MidClass2();
+        mc2.setId(3);
+        mc2.setMidClass2Name("MidClass2Name");
+        mc2.setName("MidClass2BaseClass5Name");
+        mc2.setSubclassh(sch);
+        
+        em.getTransaction().begin();
+        em.persist(sch);
+        em.persist(bc5);
+        em.persist(mc2);
+        em.getTransaction().commit();
+        
+        em.clear();
+
+        verifyDtypeColumnEntriesAndMapping(em, "BASECLASS5", 3, 
+                BaseClass5.class);
+
+        // Verify that the midclass table does not contain a discriminator column
+        verifyNoDypeColumn(em, "MidClass2");
+
+        // Verify that the subclass table does not contain a discriminator column
+        verifyNoDypeColumn(em, "SubclassH");
+        
+        // Run queries for each type. They should return only those values
+        // which match their respective types.  This will not work for single
+        // table inheritance unless a discriminator column is defined.
+        verifyInheritanceQueryResult(em, "SubclassH", 
+            classArray(SubclassH.class, MidClass2.class, BaseClass5.class),
+            1);
+
+        verifyInheritanceQueryResult(em, "MidClass2", 
+                classArray(MidClass2.class, BaseClass5.class),
+                1, 3);
+
+        verifyInheritanceQueryResult(em, "BaseClass5", 
+                classArray(BaseClass5.class),
+                1, 2, 3);
+        
+        em.clear();
+        
+        // Validate entity relationships
+        sch = em.find(SubclassH.class, 1);
+        assertEquals(sch.getName(),"SubclassHBaseClass5Name");
+        assertEquals(sch.getMidClass2Name(), "SubclassHMidClass2Name");
+        // SubclassH has relationship to BaseClass5
+        assertEquals(sch.getBaseclass5().getId(), 2);
+
+        bc5 = em.find(BaseClass5.class, 3);
+        assertEquals(bc5.getName(),"MidClass2BaseClass5Name");
+        // BaseClass5 has relationship to SubclassH through MidClass2
+        assertEquals(bc5.getSubclassh().getId(), 1);        
+        
+        bc5 = em.find(BaseClass5.class, 2);
+        assertEquals(bc5.getName(),"BaseClass5Name");
+        // BaseClass5 has relationship to SubclassH
+        assertEquals(bc5.getSubclassh().getId(), 1);        
+
+        mc2 = em.find(MidClass2.class, 3);
+        assertEquals(mc2.getName(),"MidClass2BaseClass5Name");
+        assertEquals(mc2.getMidClass2Name(), "MidClass2Name");
+        // MidClass2 has relationship to SubclassH
+        assertEquals(bc5.getSubclassh().getId(), 1);        
+
+        em.close();
+    }
+    
+    /**
+     * This variation verifies default inheritance with an abstract
+     * entity.
+     */
+    public void testAbstractEntityInheritance() {
+        EntityManager em = emf.createEntityManager();
+       
+        SubclassI sci = new SubclassI();
+        sci.setId(1);
+        sci.setClassIName("SubclassIName");
+        sci.setName("SubclassIBaseClassName");
+        
+        SubclassJ scj = new SubclassJ();
+        scj.setId(2);
+        scj.setClassJName("SubclassJName");
+        scj.setName("SubclassJBaseClassName");
+        
+        em.getTransaction().begin();
+        em.persist(sci);
+        em.persist(scj);    
+        em.getTransaction().commit();
+        
+        em.clear();
+
+        verifyDtypeColumnEntriesAndMapping(em, "ABSTRACTCLASS", 2, 
+                AbstractClass.class);
+
+        // Verify that the midclass table does not contain a discriminator column
+        verifyNoDypeColumn(em, "SubclassI");
+
+        // Verify that the subclass table does not contain a discriminator column
+        verifyNoDypeColumn(em, "SubclassJ");        
+        
+        // Run queries for each type. They should return only those values
+        // which match their respective types.  This will not work for single
+        // table inheritance unless a discriminator column is defined.
+        verifyInheritanceQueryResult(em, "AbstractClass", 
+            classArray(AbstractClass.class), 1, 2);
+
+        verifyInheritanceQueryResult(em, "SubclassI", 
+                classArray(AbstractClass.class, SubclassI.class), 1);
+
+        verifyInheritanceQueryResult(em, "SubclassJ", 
+                classArray(AbstractClass.class, SubclassJ.class), 2);        
+        
+        em.close();
+    }
+    
+    /**
+     * This variation verifies that default inheritance is used when
+     * there is a non-entity superclass in the mix:
+     *   non-entity MidClass3 extends BaseClass6
+     *   SubClassJ extends MidClass3
+     */
+    public void testMidNonEntityInheritance() {
+        EntityManager em = emf.createEntityManager();
+        
+        SubclassK sck = new SubclassK();
+        sck.setId(1);
+        sck.setClassKName("SubclassKName");
+        sck.setMidClass3Name("SubclassKMidClass3Name");
+        sck.setName("SubclassKBaseClass6Name");
+                
+        BaseClass6 bk6 = new BaseClass6();
+        bk6.setId(3);
+        bk6.setName("BaseClass6Name");
+        
+        em.getTransaction().begin();
+        em.persist(sck);
+        em.persist(bk6);
+        em.getTransaction().commit();
+        
+        em.clear();
+        
+        verifyDtypeColumnEntriesAndMapping(em, "BASECLASS6", 2, 
+                BaseClass6.class);
+
+        // Verify that the subclass table does not contain a discriminator column
+        verifyNoDypeColumn(em, "SubclassK");           
+
+        // Run queries for each type. They should return only those values
+        // which match their respective types.  This will not work for single
+        // table inheritance unless a discriminator column is defined.
+        verifyInheritanceQueryResult(em, "BaseClass6", 
+            classArray(BaseClass6.class), 1, 3);
+
+        verifyInheritanceQueryResult(em, "SubclassK", 
+                classArray(BaseClass6.class, MidClass3.class, SubclassK.class),
+                1);        
+
+        em.close();        
+    }
+
+    /**
+     * Verifies that a table contains the specified number of entries
+     * in its DTYPE (default discriminator) column.
+     * @param em  Entity nanager
+     * @param table  Name of the table to query
+     * @param entries  Expected column entry count
+     * @param baseClass Class mapping to verify
+     */
+    private void verifyDtypeColumnEntriesAndMapping(EntityManager em, 
+        String table, int entries, Class baseClass) {
+        try {
+            Query qry = em.createNativeQuery("SELECT DTYPE FROM " + table);
+            List vals = qry.getResultList();
+            assertTrue("Query should have returned " + entries + " values", 
+                vals.size() == entries);
+        }
+        catch (Exception e) {
+            fail("Exception querying DTYPE column: " + e.getMessage());
+        }        
+        
+        // Check the discriminator column of the class mapping.  
+        ClassMapping cm = getMapping(baseClass);
+        Discriminator d = cm.getDiscriminator();
+        Column[] cols = d.getColumns();
+        assertTrue("Discriminator should use DTYPE column", 
+            (cols != null && cols.length == 1 && 
+            cols[0].getName().equals("DTYPE"))); 
+    }
+
+    /**
+     * Verifies that a table does not contain a DTYPE column.
+     * @param em  Entity manager
+     * @param table Name of the table to query
+     */
+    private void verifyNoDypeColumn(EntityManager em, String table) {
+        try {
+            Query qry = em.createNativeQuery("SELECT DTYPE FROM " + table);
+            qry.getResultList();
+            fail("Expected exception.  DTYPE column should not exist on " + 
+                table);
+        }
+        catch (Exception e) {
+            // Expected exception
+        }        
+    }    
+
+    /**
+     * Verifies the resulting entity count and expected entity ids from a 
+     * simple entity query.  This method requires a "getId" method on the
+     * entity type in order to work properly.
+     * 
+     * @param em entity manager
+     * @param entity entity name
+     * @param entityType entity class
+     * @param expectedValues variable list of expected integral id values.
+     */
+    private void verifyInheritanceQueryResult(EntityManager em, String entity,
+        Class[] types, int... expectedValues) {
+        Query qry = em.createQuery("SELECT e FROM " + entity + " e");
+        List col = qry.getResultList();
+        assertTrue("Query should return " + expectedValues.length + " entities",
+            col.size() == expectedValues.length);
+        int count = 0;
+        for (int i = 0; i < col.size(); i++) {
+            Object ent = col.get(i);
+            // If a list of supers or interfaces is provided, make sure
+            // the returned type is an instance of those types
+            if (types != null) {
+                for (int j = 0; j < types.length; j++ )
+                    assertTrue(types[j].isInstance(ent));
+            }
+            int id = -1;
+            try {
+                Method mth = ent.getClass().getMethod("getId", (Class[])null);
+                id = (Integer)mth.invoke(ent, (Object[])null);
+            } catch (Exception e) {
+                fail("Caught unexepcted exception getting entity id: " 
+                    + e.getMessage());
+            }
+            for (int j = 0; j < expectedValues.length; j++)
+                if (expectedValues[j] == id)                   
+                    count++;
+        }
+        assertTrue("Returned expected entities", 
+                count == expectedValues.length);
+    }    
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestDefaultInheritanceStrategy.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/AbstractClass.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/AbstractClass.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/AbstractClass.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/AbstractClass.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+@Entity
+public abstract class AbstractClass {
+
+    @Id
+    private int id;
+        
+    @Basic
+    private String name;
+    
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    abstract public void setVersion(int version);
+
+    abstract public int getVersion();
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    public String toString() {
+        return "Id=" + id + 
+               ";Name=" + name;
+    }
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/AbstractClass.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Version;
+
+@Entity
+public class BaseClass {
+
+    @Id
+    private int id;
+    
+    @Version
+    private int version;
+    
+    @Basic
+    private String name;
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    public String toString() {
+        return "Id=" + id + 
+               ";Version=" + version +
+               ";Name=" + name;
+    }
+
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass2.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass2.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass2.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass2.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Version;
+
+@Entity
+public class BaseClass2 {
+
+    @Id
+    private int id;
+    
+    @Version
+    private int version;
+    
+    @Basic
+    private String name;
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    public String toString() {
+        return "Id=" + id + 
+               ";Version=" + version +
+               ";Name=" + name;
+    }
+
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass2.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass3.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass3.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass3.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass3.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Version;
+
+@Entity
+public class BaseClass3 {
+
+    @Id @GeneratedValue
+    private int id;
+    
+    @Version
+    private int version;
+    
+    @Basic
+    private String name;
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    public String toString() {
+        return "Id=" + id + 
+               ";Version=" + version +
+               ";Name=" + name;
+    }
+
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass3.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass4.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass4.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass4.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass4.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Version;
+
+@Entity
+public class BaseClass4 {
+
+    @Id
+    private int id;
+    
+    @Version
+    private int version;
+    
+    @Basic
+    private String name;
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    public String toString() {
+        return "Id=" + id + 
+               ";Version=" + version +
+               ";Name=" + name;
+    }
+
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass4.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass5.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass5.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass5.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass5.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.OneToOne;
+import javax.persistence.Version;
+
+@Entity
+public class BaseClass5 {
+
+    @Id
+    private int id;
+    
+    @Version
+    private int version;
+    
+    @Basic
+    private String name;
+    
+    @OneToOne
+    private SubclassH subclassh;
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    public String toString() {
+        return "Id=" + id + 
+               ";Version=" + version +
+               ";Name=" + name;
+    }
+
+    public void setSubclassh(SubclassH subclassh) {
+        this.subclassh = subclassh;
+    }
+
+    public SubclassH getSubclassh() {
+        return subclassh;
+    }
+
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass5.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass6.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass6.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass6.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass6.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+@Entity
+public class BaseClass6 {
+
+    @Id
+    private int id;
+        
+    @Basic
+    private String name;
+    
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    public String toString() {
+        return "Id=" + id + 
+               ";Name=" + name;
+    }
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/BaseClass6.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ImplClassA.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ImplClassA.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ImplClassA.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ImplClassA.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+@Entity
+public class ImplClassA implements ManagedIface {
+
+    @Basic
+    private String implClassAName;
+    
+    @Id 
+    @GeneratedValue
+    private int id;
+    
+    @Basic
+    private int intFieldSup;
+    
+    public void setImplClassAName(String implClassAName) {
+        this.implClassAName = implClassAName;
+    }
+
+    public String getImplClassAName() {
+        return implClassAName;
+    }
+    
+    public String toString() {
+        return super.toString() + ";implClassAName=" + implClassAName + 
+            ";intFieldSup=" + intFieldSup;
+    }
+
+    public int getId() {
+        return this.id;
+    }
+
+    public int getIntFieldSup() {
+        return intFieldSup;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public void setIntFieldSup(int i) {
+        this.intFieldSup = i;
+    }
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ImplClassA.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ManagedIface.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ManagedIface.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ManagedIface.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ManagedIface.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+import org.apache.openjpa.persistence.ManagedInterface;
+
+@ManagedInterface
+@Entity
+public interface ManagedIface {
+    @Id @GeneratedValue
+    public int getId();
+    public void setId(int id);
+
+    public int getIntFieldSup();
+    public void setIntFieldSup(int i);
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ManagedIface.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ManagedIface2.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ManagedIface2.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ManagedIface2.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ManagedIface2.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+import org.apache.openjpa.persistence.ManagedInterface;
+
+@ManagedInterface
+@Entity
+public interface ManagedIface2 {
+    @Id @GeneratedValue
+    public int getId();
+    public void setId(int id);
+
+    public int getIntFieldSup();
+    public void setIntFieldSup(int i);
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/ManagedIface2.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MappedSuper.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MappedSuper.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MappedSuper.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MappedSuper.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+
+@MappedSuperclass
+public class MappedSuper {
+
+    @Id
+    private int id;
+    
+    @Basic
+    private String name;
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    public String toString() {
+        return "Id=" + id + 
+               ";Name=" + name;
+    }
+
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MappedSuper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+
+@Entity
+public class MidClass extends BaseClass2 {
+
+    @Basic
+    private String midClassName;
+
+    public void setMidClassName(String midClassName) {
+        this.midClassName = midClassName;
+    }
+
+    public String getMidClassName() {
+        return midClassName;
+    }
+    
+    public String toString() {
+        return super.toString() + ";midClassName=" + midClassName;
+    }
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass2.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass2.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass2.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass2.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+
+@Entity
+public class MidClass2 extends BaseClass5 {
+
+    @Basic
+    private String midClass2Name;
+
+    public void setMidClass2Name(String midClass2Name) {
+        this.midClass2Name = midClass2Name;
+    }
+
+    public String getMidClass2Name() {
+        return midClass2Name;
+    }
+    
+    public String toString() {
+        return super.toString() + ";midClass2Name=" + midClass2Name;
+    }
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass2.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass3.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass3.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass3.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass3.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+public class MidClass3 extends BaseClass6 {
+
+    private String midClass3Name;
+
+    public void setMidClass3Name(String midClass3Name) {
+        this.midClass3Name = midClass3Name;
+    }
+
+    public String getMidClass2Name() {
+        return midClass3Name;
+    }
+    
+    public String toString() {
+        return super.toString() + ";midClass3Name=" + midClass3Name;
+    }
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/MidClass3.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassA.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassA.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassA.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassA.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+
+@Entity
+public class SubclassA extends BaseClass {
+
+    @Basic
+    private String classAName;
+
+    public void setClassAName(String classAName) {
+        this.classAName = classAName;
+    }
+
+    public String getClassAName() {
+        return classAName;
+    }
+    
+    public String toString() {
+        return super.toString() + ";classAName=" + classAName;
+    }
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassA.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassB.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassB.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassB.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassB.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+
+@Entity
+public class SubclassB extends BaseClass {
+    
+    @Basic
+    private String classBName;
+
+    public void setClassBName(String classBName) {
+        this.classBName = classBName;
+    }
+
+    public String getClassBName() {
+        return classBName;
+    }
+    
+    public String toString() {
+        return super.toString() + ";classBName=" + classBName;
+    }
+
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassB.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassC.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassC.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassC.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassC.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+
+@Entity
+public class SubclassC extends MappedSuper {
+
+    @Basic
+    private String classCName;
+
+    public void setClassCName(String classCName) {
+        this.classCName = classCName;
+    }
+
+    public String getClassAName() {
+        return classCName;
+    }
+    
+    public String toString() {
+        return super.toString() + ";classCName=" + classCName;
+    }
+    
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassC.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassD.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassD.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassD.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassD.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+
+@Entity
+public class SubclassD extends MappedSuper {
+
+    @Basic
+    private String classDName;
+
+    public void setClassDName(String classDName) {
+        this.classDName = classDName;
+    }
+
+    public String getClassDName() {
+        return classDName;
+    }
+    
+    public String toString() {
+        return super.toString() + ";classDName=" + classDName;
+    }
+    
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassD.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassE.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassE.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassE.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassE.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+
+@Entity
+public class SubclassE extends MidClass {
+
+    @Basic
+    private String classEName;
+
+    public void setClassEName(String classEName) {
+        this.classEName = classEName;
+    }
+
+    public String getClassEName() {
+        return classEName;
+    }
+    
+    public String toString() {
+        return super.toString() + ";classEName=" + classEName;
+    }
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassE.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassF.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassF.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassF.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassF.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+
+@Entity
+public class SubclassF extends BaseClass3 implements ManagedIface2  {
+
+    @Basic
+    private String classFName;
+        
+    @Basic
+    private int intFieldSup;
+    
+    public void setClassFName(String classFName) {
+        this.classFName = classFName;
+    }
+
+    public String getClassFName() {
+        return classFName;
+    }
+    
+    public String toString() {
+        return super.toString() + ";classFName=" + classFName + 
+            ";intFieldSup=" + intFieldSup;
+    }
+
+    public int getIntFieldSup() {
+        return intFieldSup;
+    }
+
+    public void setIntFieldSup(int i) {
+        this.intFieldSup = i;
+    }
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassF.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassG.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassG.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassG.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassG.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.Inheritance;
+
+@Entity
+@Inheritance
+public class SubclassG extends BaseClass4 {
+
+    @Basic
+    private String classGName;
+        
+    @Basic
+    private int intFieldSup;
+    
+    public void setClassGName(String classGName) {
+        this.classGName = classGName;
+    }
+
+    public String getClassGName() {
+        return classGName;
+    }
+    
+    public String toString() {
+        return super.toString() + ";classGName=" + classGName + 
+            ";intFieldSup=" + intFieldSup;
+    }
+
+    public int getIntFieldSup() {
+        return intFieldSup;
+    }
+
+    public void setIntFieldSup(int i) {
+        this.intFieldSup = i;
+    }
+
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassG.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassH.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassH.java?rev=681396&view=auto
==============================================================================
--- openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassH.java (added)
+++ openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassH.java Thu Jul 31 08:35:59 2008
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.OneToOne;
+
+@Entity
+public class SubclassH extends MidClass2 {
+
+    @Basic
+    private String classHName;
+        
+    @Basic
+    private int intFieldSup;
+    
+    @OneToOne
+    private BaseClass5 baseclass5;
+    
+    public void setClassHName(String classHName) {
+        this.classHName = classHName;
+    }
+
+    public String getClassHName() {
+        return classHName;
+    }
+    
+    public String toString() {
+        return super.toString() + ";classHName=" + classHName + 
+            ";intFieldSup=" + intFieldSup;
+    }
+
+    public int getIntFieldSup() {
+        return intFieldSup;
+    }
+
+    public void setIntFieldSup(int i) {
+        this.intFieldSup = i;
+    }
+
+    public void setBaseclass5(BaseClass5 baseclass5) {
+        this.baseclass5 = baseclass5;
+    }
+
+    public BaseClass5 getBaseclass5() {
+        return baseclass5;
+    }
+
+}

Propchange: openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/SubclassH.java
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message