Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I tell NHibernate to load a component as not null even when all its properties are null?

I have a Date class which wraps over the DateTime? class (aids in mocking DateTime.Now, our domain ,etc).

The Date class class only has one protected property : DateTime? date

public class Date
{
    protected DateTime? date;
}

// mapping in hbm
<component name="CompletedOn">
  <property column="StartedOn" name="date" access="field" not-null="false" />
</component>

From the nhibernate docs:

Like all value types, components do not support shared references. The null value semantics of a component are ad hoc. When reloading the containing object, NHibernate will assume that if all component columns are null, then the entire component is null. This should be okay for most purposes.

Can I override this behaviour? I want my Date class to be instantiated even if date is null.

Thanks,

like image 281
SharePoint Newbie Avatar asked Jan 22 '23 01:01

SharePoint Newbie


1 Answers

I think you could achieve this behavior by using a listener that implements IPostLoadEventListener. After the entity is loaded, you can check if the component is null and new it if it is.

like image 166
Jamie Ide Avatar answered May 01 '23 06:05

Jamie Ide