Author: epbernard
Date: 2006-08-31 15:57:04 -0400 (Thu, 31 Aug 2006)
New Revision: 10390
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/Child.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ChildHierarchy1.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ChildHierarchy2.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ChildHierarchy22.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/GenericsInheritanceTest.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/Parent.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ParentHierarchy1.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ParentHierarchy2.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ParentHierarchy22.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/DeepGenericsInheritance.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/Dummy.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/DummySubclass.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/GenericSuperclass1.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/GenericSuperclass2.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/Subclass1.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/Subclass2.java
Modified:
trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/AnnotationBinder.java
trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/Ejb3Column.java
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXAnnotatedElement.java
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXClass.java
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/generics/CompoundTypeEnvironment.java
Log:
ANN-416 xclass.getSuperclass() were not keeping track of the xclass environment making 2
step generics resolution fail
Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/AnnotationBinder.java
===================================================================
---
trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/AnnotationBinder.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/AnnotationBinder.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -1781,8 +1781,11 @@
path, mappings
);
if (inSecondPass) {
- throw new NotYetImplementedException("inSecondPass waiting for core >
3.2.0.cr4");
+ //throw new NotYetImplementedException("inSecondPass waiting for core >
3.2.0.cr4");
//secondPass.doSecondPass( mappings.getClasses() );
+ mappings.addSecondPass(
+ secondPass
+ );
}
else {
mappings.addSecondPass(
@@ -1899,8 +1902,11 @@
optional, cascadeStrategy, joinColumns, mappings
);
if (inSecondPass) {
- throw new NotYetImplementedException("inSecondPass waiting for core >
3.2.0.cr4");
+ //throw new NotYetImplementedException("inSecondPass waiting for core >
3.2.0.cr4");
//secondPass.doSecondPass( mappings.getClasses() );
+ mappings.addSecondPass(
+ secondPass
+ );
}
else {
mappings.addSecondPass(
Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/Ejb3Column.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/Ejb3Column.java 2006-08-31
19:02:36 UTC (rev 10389)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/Ejb3Column.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -433,8 +433,11 @@
if ( index == null ) return;
IndexSecondPass secondPass = new IndexSecondPass( index.name(), this, mappings );
if (inSecondPass) {
- throw new NotYetImplementedException("inSecondPass waiting for core >
3.2.0.cr4");
+ //throw new NotYetImplementedException("inSecondPass waiting for core >
3.2.0.cr4");
//secondPass.doSecondPass( mappings.getClasses() );
+ mappings.addSecondPass(
+ secondPass
+ );
}
else {
mappings.addSecondPass(
Modified:
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXAnnotatedElement.java
===================================================================
---
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXAnnotatedElement.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXAnnotatedElement.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -52,6 +52,7 @@
public boolean equals(Object obj) {
if ( obj == null || ! ( obj instanceof JavaXAnnotatedElement ) ) return false;
JavaXAnnotatedElement other = (JavaXAnnotatedElement) obj;
+ //FIXME yuk this defeat the type environment
return toAnnotatedElement().equals( other.toAnnotatedElement() );
}
Modified:
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXClass.java
===================================================================
---
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXClass.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXClass.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -11,6 +11,7 @@
import org.hibernate.reflection.XMethod;
import org.hibernate.reflection.XProperty;
import org.hibernate.reflection.java.generics.TypeEnvironment;
+import org.hibernate.reflection.java.generics.CompoundTypeEnvironment;
/**
* @author Paolo Perrotta
@@ -30,14 +31,21 @@
}
public XClass getSuperclass() {
- return getFactory().toXClass( toClass().getSuperclass(),
getFactory().getTypeEnvironment( toClass() ) );
+ //FIXME we do not pass the class TypeEnvironment here
+ //return getFactory().toXClass( toClass().getSuperclass(),
getFactory().getTypeEnvironment( toClass() ) );
+ return getFactory().toXClass( toClass().getSuperclass(),
+ new CompoundTypeEnvironment( getTypeEnvironment(), getFactory().getTypeEnvironment(
toClass() )
+ )
+ );
}
public XClass[] getInterfaces() {
Class[] classes = toClass().getInterfaces();
int length = classes.length;
XClass[] xClasses = new XClass[length];
- TypeEnvironment environment = getFactory().getTypeEnvironment( toClass() );
+ //TypeEnvironment environment = getFactory().getTypeEnvironment( toClass() );
+ TypeEnvironment environment =
+ new CompoundTypeEnvironment( getTypeEnvironment(), getFactory().getTypeEnvironment(
toClass() ) );
for ( int index = 0; index < length ; index++ ) {
xClasses[index] = getFactory().toXClass( classes[index], environment );
}
Modified:
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/generics/CompoundTypeEnvironment.java
===================================================================
---
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/generics/CompoundTypeEnvironment.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/generics/CompoundTypeEnvironment.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -8,7 +8,7 @@
* @author Davide Marchignoli
* @author Paolo Perrotta
*/
-class CompoundTypeEnvironment implements TypeEnvironment {
+public class CompoundTypeEnvironment implements TypeEnvironment {
private final TypeEnvironment f;
@@ -22,4 +22,23 @@
public Type bind(Type type) {
return f.bind( g.bind( type ) );
}
+
+ public boolean equals(Object o) {
+ if ( this == o ) return true;
+ if ( o == null || getClass() != o.getClass() ) return false;
+
+ final CompoundTypeEnvironment that = (CompoundTypeEnvironment) o;
+
+ if ( !f.equals( that.f ) ) return false;
+ if ( !g.equals( that.g ) ) return false;
+
+ return true;
+ }
+
+ public int hashCode() {
+ int result;
+ result = f.hashCode();
+ result = 29 * result + g.hashCode();
+ return result;
+ }
}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/Child.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/Child.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/Child.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,27 @@
+package org.hibernate.test.annotations.genericsinheritance;
+
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+@MappedSuperclass
+public abstract class Child<P extends Parent> {
+
+ @Id Long id;
+ @ManyToOne P parent;
+
+ public Long getId() {
+ return id;
+ }
+ public void setId(Long id) {
+ this.id = id;
+ }
+ public P getParent() {
+ return parent;
+ }
+ public void setParent(P parent) {
+ this.parent = parent;
+ }
+
+
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ChildHierarchy1.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ChildHierarchy1.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ChildHierarchy1.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,8 @@
+package org.hibernate.test.annotations.genericsinheritance;
+
+import javax.persistence.Entity;
+
+@Entity
+public class ChildHierarchy1 extends Child<ParentHierarchy1> {
+
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ChildHierarchy2.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ChildHierarchy2.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ChildHierarchy2.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,8 @@
+package org.hibernate.test.annotations.genericsinheritance;
+
+import javax.persistence.MappedSuperclass;
+
+@MappedSuperclass
+public class ChildHierarchy2<P extends ParentHierarchy2> extends Child<P> {
+
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ChildHierarchy22.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ChildHierarchy22.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ChildHierarchy22.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,8 @@
+package org.hibernate.test.annotations.genericsinheritance;
+
+import javax.persistence.Entity;
+
+@Entity
+public class ChildHierarchy22 extends ChildHierarchy2<ParentHierarchy22> {
+
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/GenericsInheritanceTest.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/GenericsInheritanceTest.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/GenericsInheritanceTest.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,24 @@
+//$Id: $
+package org.hibernate.test.annotations.genericsinheritance;
+
+import org.hibernate.test.annotations.TestCase;
+import org.hibernate.Session;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class GenericsInheritanceTest extends TestCase {
+ public void testMapping() throws Exception {
+ Session s = openSession();
+ s.close();
+ //mapping is tested
+ }
+ protected Class[] getMappings() {
+ return new Class[] {
+ ChildHierarchy1.class,
+ ParentHierarchy1.class,
+ ChildHierarchy22.class,
+ ParentHierarchy22.class
+ };
+ }
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/Parent.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/Parent.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/Parent.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,35 @@
+package org.hibernate.test.annotations.genericsinheritance;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.MapKey;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.OneToMany;
+
+@MappedSuperclass
+public abstract class Parent<C extends Child> {
+
+ @Id @GeneratedValue Long id;
+ @MapKey @OneToMany(mappedBy="parent") Map<Long,C> children = new
HashMap<Long,C>();
+
+
+ public Long getId() {
+ return id;
+ }
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+
+ public Map<Long,C> getChildren() {
+ return children;
+ }
+ public void setChildren(Map<Long,C> children) {
+ this.children = children;
+ }
+
+
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ParentHierarchy1.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ParentHierarchy1.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ParentHierarchy1.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,8 @@
+package org.hibernate.test.annotations.genericsinheritance;
+
+import javax.persistence.Entity;
+
+@Entity
+public class ParentHierarchy1 extends Parent<ChildHierarchy1> {
+
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ParentHierarchy2.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ParentHierarchy2.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ParentHierarchy2.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,8 @@
+package org.hibernate.test.annotations.genericsinheritance;
+
+import javax.persistence.MappedSuperclass;
+
+@MappedSuperclass
+public class ParentHierarchy2<C extends ChildHierarchy2> extends Parent<C> {
+
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ParentHierarchy22.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ParentHierarchy22.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/genericsinheritance/ParentHierarchy22.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,8 @@
+package org.hibernate.test.annotations.genericsinheritance;
+
+import javax.persistence.Entity;
+
+@Entity
+public class ParentHierarchy22 extends ParentHierarchy2<ChildHierarchy22> {
+
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/DeepGenericsInheritance.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/DeepGenericsInheritance.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/DeepGenericsInheritance.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,23 @@
+//$Id: $
+package org.hibernate.test.reflection.java.generics.deep;
+
+import junit.framework.TestCase;
+import org.hibernate.reflection.java.JavaXFactory;
+import org.hibernate.reflection.XClass;
+
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class DeepGenericsInheritance extends TestCase {
+ public void test2StepsGenerics() throws Exception {
+ JavaXFactory factory = new JavaXFactory();
+ XClass subclass2 = factory.toXClass( Subclass2.class );
+ XClass dummySubclass = factory.toXClass( DummySubclass.class );
+ XClass superclass = subclass2.getSuperclass();
+ XClass supersuperclass = superclass.getSuperclass();
+ assertTrue( supersuperclass.getDeclaredProperties( "field" ).get( 1
).isTypeResolved() );
+ assertEquals( dummySubclass, supersuperclass.getDeclaredProperties( "field"
).get( 1 ).getType() );
+
+ }
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/Dummy.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/Dummy.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/Dummy.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,28 @@
+package org.hibernate.test.reflection.java.generics.deep;
+
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Id;
+
+/**
+ *
+ */
+@MappedSuperclass
+public class Dummy {
+ @Id
+ protected Long id;
+
+ private String name;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/DummySubclass.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/DummySubclass.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/DummySubclass.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,12 @@
+package org.hibernate.test.reflection.java.generics.deep;
+
+import javax.persistence.Entity;
+
+import org.hibernate.test.reflection.java.generics.deep.Dummy;
+
+/**
+ *
+ */
+@Entity
+public class DummySubclass extends Dummy {
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/GenericSuperclass1.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/GenericSuperclass1.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/GenericSuperclass1.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,28 @@
+package org.hibernate.test.reflection.java.generics.deep;
+
+import javax.persistence.MappedSuperclass;
+import javax.persistence.OneToOne;
+import javax.persistence.Id;
+
+import org.hibernate.test.reflection.java.generics.deep.Dummy;
+
+/**
+ *
+ */
+@MappedSuperclass
+public class GenericSuperclass1<T extends Dummy> {
+ @Id
+ protected Long id;
+
+ @OneToOne
+ protected T dummy;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public T getDummy() {
+ return dummy;
+ }
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/GenericSuperclass2.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/GenericSuperclass2.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/GenericSuperclass2.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,13 @@
+package org.hibernate.test.reflection.java.generics.deep;
+
+import javax.persistence.MappedSuperclass;
+
+import org.hibernate.test.reflection.java.generics.deep.Dummy;
+import org.hibernate.test.reflection.java.generics.deep.GenericSuperclass1;
+
+/**
+ *
+ */
+@MappedSuperclass
+public class GenericSuperclass2<T extends Dummy> extends
GenericSuperclass1<T> {
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/Subclass1.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/Subclass1.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/Subclass1.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,13 @@
+package org.hibernate.test.reflection.java.generics.deep;
+
+import javax.persistence.Entity;
+
+import org.hibernate.test.reflection.java.generics.deep.DummySubclass;
+import org.hibernate.test.reflection.java.generics.deep.GenericSuperclass1;
+
+/**
+ *
+ */
+@Entity
+public class Subclass1 extends GenericSuperclass1<DummySubclass> {
+}
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/Subclass2.java
===================================================================
---
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/Subclass2.java 2006-08-31
19:02:36 UTC (rev 10389)
+++
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/generics/deep/Subclass2.java 2006-08-31
19:57:04 UTC (rev 10390)
@@ -0,0 +1,13 @@
+package org.hibernate.test.reflection.java.generics.deep;
+
+import javax.persistence.Entity;
+
+import org.hibernate.test.reflection.java.generics.deep.DummySubclass;
+import org.hibernate.test.reflection.java.generics.deep.GenericSuperclass2;
+
+/**
+ *
+ */
+@Entity
+public class Subclass2 extends GenericSuperclass2<DummySubclass> {
+}