[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