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. |