|
From: <hib...@li...> - 2006-04-01 00:02:50
|
Author: epbernard
Date: 2006-03-31 19:02:15 -0500 (Fri, 31 Mar 2006)
New Revision: 9725
Modified:
trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/AnnotationBinder.java
trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/FkSecondPass.java
Log:
ANN-300
Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/AnnotationBinder.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/AnnotationBinder.java 2006-03-31 17:47:53 UTC (rev 9724)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/AnnotationBinder.java 2006-04-01 00:02:15 UTC (rev 9725)
@@ -1710,6 +1710,15 @@
mappings)
);
}
+ else {
+ String path = propertyHolder.getPath() + "." + propertyName;
+ mappings.addSecondPass(
+ new FkSecondPass(
+ value, columns,
+ !optional, //cannot have nullabe and unique on certain DBs
+ path, mappings )
+ );
+ }
PropertyBinder binder = new PropertyBinder();
binder.setName( propertyName );
Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/FkSecondPass.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/FkSecondPass.java 2006-03-31 17:47:53 UTC (rev 9724)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/FkSecondPass.java 2006-04-01 00:02:15 UTC (rev 9725)
@@ -8,6 +8,7 @@
import org.hibernate.mapping.ManyToOne;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.mapping.Value;
+import org.hibernate.mapping.OneToOne;
/**
* Enable a proper set of the FK columns in respect with the id column order
@@ -37,7 +38,7 @@
PersistentClass ref = (PersistentClass) persistentClasses.get( manyToOne.getReferencedEntityName() );
if ( ref == null ) {
throw new AnnotationException(
- "@OneToOne or @ManyToOne on " + path + " references an unknown entity: " + manyToOne.getReferencedEntityName()
+ "@OneToOne or @ManyToOne on " + path + " references an unknown entity: " + manyToOne.getReferencedEntityName()
);
}
BinderHelper.createSyntheticPropertyReference( columns, ref, null, manyToOne, false, mappings );
@@ -47,6 +48,9 @@
*/
if ( ! manyToOne.isIgnoreNotFound() ) manyToOne.createPropertyRefConstraints( persistentClasses );
}
+ else if ( value instanceof OneToOne ) {
+ ( (OneToOne) value ).createForeignKey();
+ }
else {
throw new AssertionFailure( "FkSecondPass for a wrong value type: " + value.getClass().getName() );
}
|