From b48c5b601c03d4307b3ffe137259e398c0e8fbcb Mon Sep 17 00:00:00 2001 From: Tomasz Blachowicz Date: Tue, 2 Nov 2010 22:06:09 +0000 Subject: [PATCH 1/3] The name of the entity returned by the JPA2 meta-model EntityType.getName() is now PersistentClass.nodeName. This guarantees that EntityType.getName() == @Entity.name for classes annotated with JPA2. --- .../java/org/hibernate/ejb/metamodel/EntityTypeImpl.java | 8 ++++---- .../java/org/hibernate/ejb/metamodel/MetamodelImpl.java | 4 ++-- .../test/java/org/hibernate/ejb/test/metadata/House.java | 2 +- .../org/hibernate/ejb/test/metadata/MetadataTest.java | 4 +++- .../test/java/org/hibernate/ejb/test/metadata/Person.java | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/EntityTypeImpl.java b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/EntityTypeImpl.java index 3abe1e6bf2..b39a6b7242 100644 --- a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/EntityTypeImpl.java +++ b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/EntityTypeImpl.java @@ -33,20 +33,20 @@ import javax.persistence.metamodel.EntityType; public class EntityTypeImpl extends AbstractIdentifiableType implements EntityType, Serializable { - private final String className; + private final String nodeName; public EntityTypeImpl( Class javaType, AbstractIdentifiableType superType, - String className, + String nodeName, boolean hasIdentifierProperty, boolean isVersioned) { super( javaType, superType, hasIdentifierProperty, isVersioned ); - this.className = className; + this.nodeName = nodeName; } public String getName() { - return className; + return nodeName; } public BindableType getBindableType() { diff --git a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java index 6d4cb5761f..5f0c9fa70f 100644 --- a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java +++ b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java @@ -94,7 +94,7 @@ public class MetamodelImpl implements Metamodel, Serializable { EntityTypeImpl entityType = new EntityTypeImpl( javaType, superType, - persistentClass.getClassName(), + persistentClass.getNodeName(), persistentClass.hasIdentifierProperty(), persistentClass.isVersioned() ); @@ -102,7 +102,7 @@ public class MetamodelImpl implements Metamodel, Serializable { context.popEntityWorkedOn(persistentClass); return entityType; } - + private static MappedSuperclassTypeImpl locateOrBuildMappedsuperclassType( MappedSuperclass mappedSuperclass, MetadataContext context) { MappedSuperclassTypeImpl mappedSuperclassType = context.locateMappedSuperclassType( mappedSuperclass ); diff --git a/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/metadata/House.java b/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/metadata/House.java index 401233da87..f80f6a677c 100644 --- a/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/metadata/House.java +++ b/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/metadata/House.java @@ -37,7 +37,7 @@ import javax.persistence.OrderColumn; /** * @author Emmanuel Bernard */ -@Entity +@Entity(name="org.hibernate.ejb.test.metadata.House") public class House { private Key key; private Address address; diff --git a/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/metadata/MetadataTest.java b/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/metadata/MetadataTest.java index 13d7b36412..bb2cf6443e 100644 --- a/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/metadata/MetadataTest.java +++ b/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/metadata/MetadataTest.java @@ -97,7 +97,7 @@ public class MetadataTest extends TestCase { final SingularAttribute id2 = fridgeType.getId( Long.class ); assertNotNull( id2 ); - assertEquals( Fridge.class.getName(), fridgeType.getName() ); + assertEquals( "Fridge", fridgeType.getName() ); assertEquals( Long.class, fridgeType.getIdType().getJavaType() ); assertTrue( fridgeType.hasSingleIdAttribute() ); assertFalse( fridgeType.hasVersionAttribute() ); @@ -106,6 +106,7 @@ public class MetadataTest extends TestCase { assertEquals( 3, fridgeType.getDeclaredAttributes().size() ); final EntityType houseType = factory.getMetamodel().entity( House.class ); + assertEquals( "org.hibernate.ejb.test.metadata.House", houseType.getName() ); assertTrue( houseType.hasSingleIdAttribute() ); final SingularAttribute houseId = houseType.getDeclaredId( House.Key.class ); assertNotNull( houseId ); @@ -113,6 +114,7 @@ public class MetadataTest extends TestCase { assertEquals( Attribute.PersistentAttributeType.EMBEDDED, houseId.getPersistentAttributeType() ); final EntityType personType = factory.getMetamodel().entity( Person.class ); + assertEquals( "Homo", personType.getName() ); assertFalse( personType.hasSingleIdAttribute() ); final Set> ids = personType.getIdClassAttributes(); assertNotNull( ids ); diff --git a/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/metadata/Person.java b/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/metadata/Person.java index 7d0133566e..4ee04acfb1 100644 --- a/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/metadata/Person.java +++ b/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/metadata/Person.java @@ -32,7 +32,7 @@ import javax.persistence.Entity; * @author Emmanuel Bernard */ @IdClass(Person.PersonPK.class) -@Entity +@Entity(name="Homo") //Person in latin ;) public class Person { private String firstName; private String lastName; From f29fab99a6156f482537ebbc37deada7cbdf9676 Mon Sep 17 00:00:00 2001 From: Tomasz Blachowicz Date: Wed, 3 Nov 2010 14:10:58 +0000 Subject: [PATCH 2/3] HHH-5709: New property added to PersistentClass to hold the name of the entity compliant with JSR-317 spec. Used by JPA2 metamodel. --- .../java/org/hibernate/cfg/annotations/EntityBinder.java | 1 + .../main/java/org/hibernate/mapping/PersistentClass.java | 9 +++++++++ .../java/org/hibernate/ejb/metamodel/MetamodelImpl.java | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/annotations/EntityBinder.java b/hibernate-core/src/main/java/org/hibernate/cfg/annotations/EntityBinder.java index 34cc027035..31df5d4acc 100644 --- a/hibernate-core/src/main/java/org/hibernate/cfg/annotations/EntityBinder.java +++ b/hibernate-core/src/main/java/org/hibernate/cfg/annotations/EntityBinder.java @@ -195,6 +195,7 @@ public class EntityBinder { persistentClass.setAbstract( annotatedClass.isAbstract() ); persistentClass.setClassName( annotatedClass.getName() ); persistentClass.setNodeName( name ); + persistentClass.setAnnotatedEntityName(name); //persistentClass.setDynamic(false); //no longer needed with the Entity name refactoring? persistentClass.setEntityName( annotatedClass.getName() ); bindDiscriminatorValue(); diff --git a/hibernate-core/src/main/java/org/hibernate/mapping/PersistentClass.java b/hibernate-core/src/main/java/org/hibernate/mapping/PersistentClass.java index d27d30f7e7..dfb1e13b11 100644 --- a/hibernate-core/src/main/java/org/hibernate/mapping/PersistentClass.java +++ b/hibernate-core/src/main/java/org/hibernate/mapping/PersistentClass.java @@ -57,6 +57,7 @@ public abstract class PersistentClass implements Serializable, Filterable, MetaA private String proxyInterfaceName; private String nodeName; + private String annotatedEntityName; private String discriminatorValue; private boolean lazy; @@ -735,6 +736,14 @@ public abstract class PersistentClass implements Serializable, Filterable, MetaA public void setNodeName(String nodeName) { this.nodeName = nodeName; } + + public String getAnnotatedEntityName() { + return annotatedEntityName; + } + + public void setAnnotatedEntityName(String annotatedEntityName) { + this.annotatedEntityName = annotatedEntityName; + } public boolean hasPojoRepresentation() { return getClassName()!=null; diff --git a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java index 5f0c9fa70f..eff7917a17 100644 --- a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java +++ b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java @@ -94,7 +94,7 @@ public class MetamodelImpl implements Metamodel, Serializable { EntityTypeImpl entityType = new EntityTypeImpl( javaType, superType, - persistentClass.getNodeName(), + persistentClass.getAnnotatedEntityName(), persistentClass.hasIdentifierProperty(), persistentClass.isVersioned() ); From fb26f4c1a0907a0568fc1ba7b1fdc486e2ae2ea9 Mon Sep 17 00:00:00 2001 From: Tomasz Blachowicz Date: Tue, 9 Nov 2010 09:53:02 +0000 Subject: [PATCH 3/3] HHH-5709: New property of PersistentClass finally renamed to jpaEntityName --- .../org/hibernate/cfg/annotations/EntityBinder.java | 2 +- .../java/org/hibernate/mapping/PersistentClass.java | 10 +++++----- .../org/hibernate/ejb/metamodel/EntityTypeImpl.java | 8 ++++---- .../org/hibernate/ejb/metamodel/MetamodelImpl.java | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/annotations/EntityBinder.java b/hibernate-core/src/main/java/org/hibernate/cfg/annotations/EntityBinder.java index 31df5d4acc..1f73de8b40 100644 --- a/hibernate-core/src/main/java/org/hibernate/cfg/annotations/EntityBinder.java +++ b/hibernate-core/src/main/java/org/hibernate/cfg/annotations/EntityBinder.java @@ -195,7 +195,7 @@ public class EntityBinder { persistentClass.setAbstract( annotatedClass.isAbstract() ); persistentClass.setClassName( annotatedClass.getName() ); persistentClass.setNodeName( name ); - persistentClass.setAnnotatedEntityName(name); + persistentClass.setJpaEntityName(name); //persistentClass.setDynamic(false); //no longer needed with the Entity name refactoring? persistentClass.setEntityName( annotatedClass.getName() ); bindDiscriminatorValue(); diff --git a/hibernate-core/src/main/java/org/hibernate/mapping/PersistentClass.java b/hibernate-core/src/main/java/org/hibernate/mapping/PersistentClass.java index dfb1e13b11..f2c941a081 100644 --- a/hibernate-core/src/main/java/org/hibernate/mapping/PersistentClass.java +++ b/hibernate-core/src/main/java/org/hibernate/mapping/PersistentClass.java @@ -57,7 +57,7 @@ public abstract class PersistentClass implements Serializable, Filterable, MetaA private String proxyInterfaceName; private String nodeName; - private String annotatedEntityName; + private String jpaEntityName; private String discriminatorValue; private boolean lazy; @@ -737,12 +737,12 @@ public abstract class PersistentClass implements Serializable, Filterable, MetaA this.nodeName = nodeName; } - public String getAnnotatedEntityName() { - return annotatedEntityName; + public String getJpaEntityName() { + return jpaEntityName; } - public void setAnnotatedEntityName(String annotatedEntityName) { - this.annotatedEntityName = annotatedEntityName; + public void setJpaEntityName(String jpaEntityName) { + this.jpaEntityName = jpaEntityName; } public boolean hasPojoRepresentation() { diff --git a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/EntityTypeImpl.java b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/EntityTypeImpl.java index b39a6b7242..d0124a8dff 100644 --- a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/EntityTypeImpl.java +++ b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/EntityTypeImpl.java @@ -33,20 +33,20 @@ import javax.persistence.metamodel.EntityType; public class EntityTypeImpl extends AbstractIdentifiableType implements EntityType, Serializable { - private final String nodeName; + private final String jpaEntityName; public EntityTypeImpl( Class javaType, AbstractIdentifiableType superType, - String nodeName, + String jpaEntityName, boolean hasIdentifierProperty, boolean isVersioned) { super( javaType, superType, hasIdentifierProperty, isVersioned ); - this.nodeName = nodeName; + this.jpaEntityName = jpaEntityName; } public String getName() { - return nodeName; + return jpaEntityName; } public BindableType getBindableType() { diff --git a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java index eff7917a17..b86fce4950 100644 --- a/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java +++ b/hibernate-entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java @@ -94,7 +94,7 @@ public class MetamodelImpl implements Metamodel, Serializable { EntityTypeImpl entityType = new EntityTypeImpl( javaType, superType, - persistentClass.getAnnotatedEntityName(), + persistentClass.getJpaEntityName(), persistentClass.hasIdentifierProperty(), persistentClass.isVersioned() );