I figured out what this was.  
 
In my HBM mapping files I had a lot of references back to this class as 
follows:
 
 
Well it turns out higher up was actually pointing me in the general 
direction of the issue:
 
Test 'ItemBank.UnitTests.ExamTypeTests.Create' failed: 
NHibernate.PropertyValueException : not-null property references a null or 
transient value 
ItemBank.BusinessObjects.ExamType._ItemBank.BusinessObjects.Item.ExamTypesBackref
 at NHibernate.Engine.Nullability.CheckNullability(Object[] values, 
IEntityPersister persister, Boolean isUpdate)
 at 
NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate(Object
 
entity, EntityKey key, IEntityPersister persister, Boolean 
useIdentityColumn, Object anything, IEventSource source, Boolean 
requiresImmediateIdAccess)
 at NHibernate.Event.Default.AbstractSaveEventListener.PerformSave(Object 
entity, Object id, IEntityPersister persister, Boolean useIdentityColumn, 
Object anything, IEventSource source, Boolean requiresImmediateIdAccess)
 at 
NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object 
entity, String entityName, Object anything, IEventSource source, Boolean 
requiresImmediateIdAccess)
 at 
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent
 
event)
 at 
NHibernate.Event.Default.DefaultSaveEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent
 
event)
 at 
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent
 
event)
 at 
NHibernate.Event.Default.DefaultSaveEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent
 
event)
 at 
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent
 
event)
 at NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent event)
 at NHibernate.Impl.SessionImpl.Save(Object obj)
 C:\Visual Studio Projects\NHibernate Class 
Library\ARRT.NH\Data\NHibernateRepository.cs(76,0): at 
ARRT.NH.Data.NHibernate.NHibernateRepositoryWithTypedId`2.Save(T entity)
 UnitTests\ExamTypeTests.cs(61,0): at 
ItemBank.UnitTests.ExamTypeTests.Create()
 
That not-null property was what was causing the issue.  If I go and look at 
the class in question ("Item") I seen the following:

 

    <bag name="ExamTypes" lazy="true" cascade="none">
      <!--property-ref is refering to this objects type column, if we omit 
this it defaults to the Id property which is the RecordID which
            is not what we want.  Removed not-null="true" as I was getting 
not-null property references a null or transient value error-->
      <key column="Type" property-ref="Type" not-null="true" 
on-delete="noaction" update="false"></key>
      <one-to-many class="ExamType" />
    </bag>

After removing the not-null="true" on the above statement it worked just 
fine.


On Monday, July 2, 2012 11:52:47 AM UTC-5, MattO wrote:

> I just upgraded to 3.3.1 from 2.1.2 and seem to have stumbled upon a bug.  
> Some of my unit tests are now failing.  Not sure how to fix it other then 
> reverting back to 2.1.2.
>  
> When doing a flush I get an unable to cast ojbect of type 'System.Object' 
> to type 'System.String' in a few of my entitys:
>  
> Test 'ItemBank.UnitTests.ExamSelectionTests.Delete' failed: 
> System.InvalidCastException : Unable to cast object of type 'System.Object' 
> to type 'System.String'. 
> at NHibernate.Type.AbstractStringType.ToString(Object val) 
> at NHibernate.Type.NullableType.ToLoggableString(Object value, 
> ISessionFactoryImplementor factory) 
> at NHibernate.Impl.Printer.ToString(Object entity, EntityMode entityMode) 
> at NHibernate.Impl.Printer.ToString(IEnumerator enumerator, EntityMode 
> entityMode) 
> at 
> NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions(FlushEvent
>  
> event) 
> at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent 
> event) 
> at NHibernate.Impl.SessionImpl.Flush()
>
> Anyone see this before?
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/nhusers/-/-KCADxr4TI4J.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to