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() ); } |