diff --git a/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/House.java b/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/House.java new file mode 100644 index 0000000000..7bee9d6bd8 --- /dev/null +++ b/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/House.java @@ -0,0 +1,43 @@ +package org.hibernate.ejb.test.metadata; + +import java.io.Serializable; +import javax.persistence.EmbeddedId; +import javax.persistence.Entity; + +/** + * @author Emmanuel Bernard + */ +@Entity +public class House { + private Key key; + private String address1; + + @EmbeddedId + public Key getKey() { + return key; + } + + public void setKey(Key key) { + this.key = key; + } + + public String getAddress1() { + return address1; + } + + public void setAddress1(String address1) { + this.address1 = address1; + } + + public static class Key implements Serializable { + private String uuid; + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + } +} diff --git a/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/MetadataTest.java b/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/MetadataTest.java index 7a045ba73d..9f34bedd83 100644 --- a/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/MetadataTest.java +++ b/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/MetadataTest.java @@ -6,6 +6,7 @@ import javax.persistence.metamodel.EntityType; import javax.persistence.metamodel.Bindable; import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.Type; +import javax.persistence.metamodel.Attribute; import org.hibernate.ejb.test.TestCase; @@ -37,7 +38,13 @@ public class MetadataTest extends TestCase { assertFalse( fridgeType.hasVersionAttribute() ); assertEquals( Type.PersistenceType.ENTITY, fridgeType.getPersistenceType() ); - //TODO IdClass + final EntityType houseType = factory.getMetamodel().entity( House.class ); + assertTrue( houseType.hasSingleIdAttribute() ); + final SingularAttribute houseId = houseType.getDeclaredId( House.Key.class ); + assertNotNull( houseId ); + assertTrue( houseId.isId() ); + assertEquals( Attribute.PersistentAttributeType.EMBEDDED, houseId.getPersistentAttributeType() ); + final EntityType personType = factory.getMetamodel().entity( Person.class ); assertFalse( personType.hasSingleIdAttribute() ); final Set> ids = personType.getIdClassAttributes(); @@ -63,17 +70,39 @@ public class MetadataTest extends TestCase { ); assertEquals( Integer.class, singularAttribute.getBindableJavaType() ); assertEquals( Bindable.BindableType.SINGULAR_ATTRIBUTE, singularAttribute.getBindableType() ); + assertFalse( singularAttribute.isId() ); + assertFalse( singularAttribute.isOptional() ); + assertEquals( Integer.class, singularAttribute.getType().getJavaType() ); + final Attribute attribute = entityType.getDeclaredAttribute( "temperature" ); + assertNotNull( attribute ); + assertEquals( "temperature", attribute.getName() ); + assertEquals( Fridge.class, attribute.getDeclaringType().getJavaType() ); + assertEquals( Attribute.PersistentAttributeType.BASIC, attribute.getPersistentAttributeType() ); + assertEquals( Integer.class, attribute.getJavaType() ); + assertFalse( attribute.isAssociation() ); + assertFalse( attribute.isCollection() ); + boolean found = false; + for (Attribute attr : entityType.getDeclaredAttributes() ) { + if ("temperature".equals( attr.getName() ) ) { + found = true; + break; + } + } + assertTrue( found ); + + + } //TODO test embedded //todo test plural - } @Override public Class[] getAnnotatedClasses() { return new Class[]{ Fridge.class, FoodItem.class, - Person.class + Person.class, + House.class }; }