[hibernate-commits] Hibernate SVN: r18629 - in core/trunk/annotations/src: test/java/org/hibernate/test/annotations/idclassgeneratedvalue and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Jan 26 08:39:27 EST 2010


Author: stalep
Date: 2010-01-26 08:39:26 -0500 (Tue, 26 Jan 2010)
New Revision: 18629

Modified:
   core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/idclassgeneratedvalue/IdClassGeneratedValueTest.java
Log:
[HHH-4552] generatedvalue for compositekeys are now parsed and added to the id properties


Modified: core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java
===================================================================
--- core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java	2010-01-26 13:30:32 UTC (rev 18628)
+++ core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java	2010-01-26 13:39:26 UTC (rev 18629)
@@ -2100,6 +2100,22 @@
 					new HashMap<String, IdGenerator>(), entityBinder, isIdentifierMapper, isComponentEmbedded,
 					inSecondPass, mappings, inheritanceStatePerClass
 			);
+			
+			XProperty property = propertyAnnotatedElement.getProperty();
+			if(property.isAnnotationPresent(GeneratedValue.class) &&
+			      property.isAnnotationPresent(Id.class))
+			{
+			   //clone classGenerator and override with local values
+			   HashMap<String, IdGenerator> localGenerators = (HashMap<String, IdGenerator>) new HashMap<String, IdGenerator>();
+			   localGenerators.putAll( buildLocalGenerators( property, mappings ) );
+
+			   GeneratedValue generatedValue = property.getAnnotation( GeneratedValue.class );
+			   String generatorType = generatedValue != null ? generatorType( generatedValue.strategy() ) : "assigned";
+			   String generator = generatedValue != null ? generatedValue.generator() : BinderHelper.ANNOTATION_STRING_DEFAULT;
+                   
+			   BinderHelper.makeIdGenerator( (SimpleValue) comp.getProperty(property.getName()).getValue(), generatorType, generator, mappings, localGenerators);
+			}
+
 		}
 		return comp;
 	}
@@ -2120,21 +2136,6 @@
 		return comp;
 	}
 
-	private static void bindId(
-			String generatorType, String generatorName,
-			PropertyData inferredData, Ejb3Column[] columns, PropertyHolder propertyHolder,
-			Map<String, IdGenerator> localGenerators,
-			boolean isComposite,
-			AccessType propertyAccessor, EntityBinder entityBinder, boolean isEmbedded,
-			boolean isIdentifierMapper, ExtendedMappings mappings,
-			Map<XClass, InheritanceState> inheritanceStatePerClass
-	) {
-
-	   bindId(generatorType, generatorName, inferredData, null, columns, propertyHolder,
-			   localGenerators, isComposite, propertyAccessor, entityBinder,
-			   isEmbedded, isIdentifierMapper, mappings, inheritanceStatePerClass);
-	}
-
     private static void bindId(
           String generatorType, String generatorName, PropertyData inferredData,
           PropertyData baseInferredData, Ejb3Column[] columns, PropertyHolder propertyHolder,

Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/idclassgeneratedvalue/IdClassGeneratedValueTest.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/idclassgeneratedvalue/IdClassGeneratedValueTest.java	2010-01-26 13:30:32 UTC (rev 18628)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/idclassgeneratedvalue/IdClassGeneratedValueTest.java	2010-01-26 13:39:26 UTC (rev 18629)
@@ -75,7 +75,7 @@
 
 		s = openSession();
 		s.beginTransaction();
-		List<Simple> simpleList = s.createQuery( "select s from Simple2 s" ).list();
+		List<Simple2> simpleList = s.createQuery( "select s from Simple2 s" ).list();
 		assertEquals( simpleList.size(), 2 );
 		s1 = ( Simple2 ) s.load( Simple2.class, new SimplePK( s1Id1, 2L ) );
 		assertEquals( s1.getQuantity(), 10 );
@@ -101,7 +101,7 @@
 
 		s = openSession();
 		s.beginTransaction();
-		List<Simple> simpleList = s.createQuery( "select m from Multiple m" ).list();
+		List<Multiple> simpleList = s.createQuery( "select m from Multiple m" ).list();
 		assertEquals( simpleList.size(), 2 );
 		m1 = ( Multiple ) s.load( Multiple.class, new MultiplePK( m1Id1, m1Id2, 2L ) );
 		assertEquals( m1.getQuantity(), 10 );



More information about the hibernate-commits mailing list