Bug in NHibernate 2.0 Beta 1 relating to Custom Types - Resolved in Beta 2

Friday, 27 June 2008 13:10 by PhilJapikse

Started working with NHibernate last week, and while hooking up my POCO to
SQL Server TimeStamp field type, found a bug in the 2.0 (Beta 1) code base.

In the CustomType class constructor, the name field is getting set to the
userTypeClass.Name property (line 33).

This causes an exception to be thrown when NHibernate tries to use your
custom type since it can't get to it if not fully qualified.

The fix is simple:

change:
name = userTypeClass.Name;
to
name = userTypeClass.AssemblyQualifiedName;

Update (14-July-2008): This has been resolved in the 2.0 Beta 2
code base.


Happy Coding!

Tags:   , ,
Categories:   NHibernate
Actions:   E-mail | Permalink | Comments (8) | Comment RSSRSS comment feed

Comments

August 21. 2009 01:43

Philip Japikse

In your mapping files, do you have the version tag set correctly?

Use something like this:

<version name="RowVersion" column="LastModified"
     type="Pinnacle.NHibernate.Utilities.UserTypeTimestamp,Pinnacle.NHibernate.Utilities"
     generated="always" unsaved-value="null"/>

Philip Japikse

August 21. 2009 06:43

Rama Attaluri

The element that is causing this error is a user defined type. And the exception that I see is:

Unhandled Exception: NHibernate.MappingException: Could not compile the mapping document: TestUser.hbm.xml ---> NHibernate.MappingException: Could not determine type for: MyTest.SiteUserId, MyTest, for columns: NHibernate.Mapping.Column(Id)   at NHibernate.Mapping.SimpleValue.get_Type() in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Mapping\SimpleValue.cs:line 239
at NHibernate.Cfg.XmlHbmBinding.ClassIdBinder.CreateIdentifierProperty(HbmId idSchema, PersistentClass rootClass, SimpleValue id) in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\ClassIdBinder.cs:line 69
   at NHibernate.Cfg.XmlHbmBinding.ClassIdBinder.BindId(HbmId idSchema, PersistentClass rootClass, Table table) in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\ClassIdBinder.cs:line 31
   at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(XmlNode node, HbmClass classSchema) in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\RootClassBinder.cs:line 48
   at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddRootClasses(XmlNode parentNode) in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 67
   at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(XmlNode node) in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 30
   at NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc) in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 431
   --- End of inner exception stack trace ---
   at NHibernate.Cfg.Configuration.LogAndThrow(Exception exception) in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 262
   at NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc) in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 436
   at NHibernate.Cfg.Configuration.ProcessMappingsQueue() in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1557
   at NHibernate.Cfg.Configuration.AddDocumentThroughQueue(NamedXmlDocument document) in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1548
   at NHibernate.Cfg.Configuration.AddXmlReader(XmlReader hbmReader, String name) in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1541
   at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream, String name) in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 506
   at NHibernate.Cfg.Configuration.AddResource(String path, Assembly assembly) in c:\CSharp\NH2.0.0\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 544

Rama Attaluri

August 21. 2009 11:43

Philip Japikse

I just updated everything to CR2 (see my post for compiling CR2 in VS2008 and the 3.5 FW), and it worked fine.  All of my tests passed.  What is the error that you are getting?  (I will check my post on the custom class to make sure it's current, but won't get to that until tomorrow.)

Philip Japikse

August 21. 2009 16:43

Rama Attaluri

Have you tried this out in the beta2 release? I still see this bug, even with the NHibernate 2.0 CR2 source.

Thanks.

Rama Attaluri

August 21. 2009 21:43

Philip Japikse

Beta 2 codebase fixed this bug.

Philip Japikse

August 22. 2009 02:43

Philip Japikse

Ok, I didn't follow the correct process on my first bug report.  I created a new bug with sample code and tests, etc. here http://jira.nhibernate.org/browse/NH-1377

Philip Japikse

August 22. 2009 07:43

Philip Japikse

I did, and the response was that it is a non-issue.  I responded with the link to the sample code that I used to discover the issue (probably should have done that first).

Philip Japikse

August 22. 2009 12:43

mallen

Hi,

Have you logged this issue on jira?
http://jira.nhibernate.org/secure/Dashboard.jspa

mallen

Add comment




  Country flag

biuquote
Loading