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.