|
From: <fab...@us...> - 2011-05-31 12:12:32
|
Revision: 5896
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5896&view=rev
Author: fabiomaulo
Date: 2011-05-31 12:12:20 +0000 (Tue, 31 May 2011)
Log Message:
-----------
Fix NH-941 NH-1050
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/CollectionBinder.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH941/Fixture.cs
Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/CollectionBinder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/CollectionBinder.cs 2011-05-31 03:41:20 UTC (rev 5895)
+++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/CollectionBinder.cs 2011-05-31 12:12:20 UTC (rev 5896)
@@ -760,6 +760,21 @@
}
BindCache(collectionMapping.Cache, model);
+
+ if (model.IsOneToMany && !model.IsInverse && !model.Key.IsNullable)
+ {
+ // for non-inverse one-to-many, with a not-null fk, add a backref!
+ string entityName = ((OneToMany)model.Element).ReferencedEntityName;
+ PersistentClass referenced = mappings.GetClass(entityName);
+ Backref prop = new Backref();
+ prop.Name = '_' + model.OwnerEntityName + "." + collectionMapping.Name + "Backref";
+ prop.IsUpdateable = false;
+ prop.IsSelectable = false;
+ prop.CollectionRole = model.Role;
+ prop.EntityName = model.Owner.EntityName;
+ prop.Value = model.Key;
+ referenced.AddProperty(prop);
+ }
}
private void BindManyToMany(HbmManyToMany manyToManyMapping, Mapping.Collection model)
Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH941/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH941/Fixture.cs 2011-05-31 03:41:20 UTC (rev 5895)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH941/Fixture.cs 2011-05-31 12:12:20 UTC (rev 5896)
@@ -16,7 +16,6 @@
public virtual int Id { get; set; }
}
- [Ignore("Not fixed yet")]
public class Fixture : TestCaseMappingByCode
{
protected override HbmMapping GetMappings()
@@ -27,7 +26,7 @@
rc.Id(x => x.Id, map => map.Generator(Generators.HighLow));
rc.Bag(x => x.Relateds, map =>
{
- map.Key(km => km.Column(cm => cm.NotNullable(true)));
+ map.Key(km => km.NotNullable(true));
map.Cascade(Mapping.ByCode.Cascade.All);
}, rel => rel.OneToMany());
});
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|