diff -u -b -r src/org/hibernate/cfg/AnnotationBinder.java CP/hibernate-annotations-3.2.1.GA_CP01/src/java/org/hibernate/cfg/AnnotationBinder.java
--- src/org/hibernate/cfg/AnnotationBinder.java	2006-12-08 13:25:52.000000000 -0500
+++ src/java/org/hibernate/cfg/AnnotationBinder.java	2007-12-18 04:53:54.000000000 -0500
@@ -1,4 +1,4 @@
-//$Id: AnnotationBinder.java 10938 2006-12-07 05:21:17Z epbernard $
+//$Id: AnnotationBinder.java 14248 2007-12-18 09:53:54Z anthonyHib $
 package org.hibernate.cfg;
 
 import java.util.ArrayList;
@@ -1902,7 +1902,7 @@
 			}
 			else {
 				mappings.addSecondPass(
-						secondPass
+						secondPass, BinderHelper.isDefault( mappedBy )
 				);
 			}
 		}
diff -u -b -r src/org/hibernate/cfg/AnnotationConfiguration.java CP/hibernate-annotations-3.2.1.GA_CP01/src/java/org/hibernate/cfg/AnnotationConfiguration.java
--- src/org/hibernate/cfg/AnnotationConfiguration.java	2006-12-08 13:25:51.000000000 -0500
+++ src/java/org/hibernate/cfg/AnnotationConfiguration.java	2007-12-18 04:53:54.000000000 -0500
@@ -1,4 +1,4 @@
-// $Id: AnnotationConfiguration.java 10650 2006-10-25 01:18:29Z epbernard $
+// $Id: AnnotationConfiguration.java 14248 2007-12-18 09:53:54Z anthonyHib $
 package org.hibernate.cfg;
 
 import java.io.File;
@@ -293,6 +293,17 @@
 				iter.remove();
 			}
 		}
+		//process OneToManySecondPass in order: first
+		iter = secondPasses.iterator();
+		while ( iter.hasNext() ) {
+			SecondPass sp = (SecondPass) iter.next();
+
+			if ( sp instanceof CreateKeySecondPass ) {
+				sp.doSecondPass( classes );
+				iter.remove();
+			}
+		}
+		
 		super.secondPassCompile();
 		inSecondPass = false;
 		Iterator tables = (Iterator<Map.Entry<Table, List<String[]>>>) tableUniqueConstraints.entrySet().iterator();
