These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: Reflection optimizer failing on nullables
PostPosted: Wed Dec 27, 2006 8:08 am 
Newbie

Joined: Sun Jun 25, 2006 9:17 pm
Posts: 7
Location: Tempe, Az
I was looking through my NHibernate logs and noticed that on one of my classes, CodeDOM compilation seems to be failing. The class in question uses several nullables, and these are the properties that seem to be causing the problem. A sample of the offending code (this is taken from my log file, see below for the entire file) is as follows:

Code:
t.Purity = values[3] == null ? new System.Nullable`1[[System.Double, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]() : (System.Nullable`1[[System.Double, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]])values[3];


This produces the following error:
Code:
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:18, Column:53 [b]Message:Unexpected character '`'[/b]


Hibernate version: 1.0.3.0

Edit: the forum is truncating the log. I'll try post the relevant part as a reply.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Dec 27, 2006 8:12 am 
Newbie

Joined: Sun Jun 25, 2006 9:17 pm
Posts: 7
Location: Tempe, Az
2006-12-27 04:51:49,343 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Init compiler for class data.Item
2006-12-27 04:51:49,343 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Adding referenced assembly C:\WINDOWS\assembly\GAC\NHibernate\1.0.2.0__154fdcb44c4484fc\NHibernate.dll
2006-12-27 04:51:49,343 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Adding referenced assembly C:\Documents and Settings\David\My Documents\Visual Studio 2005\Projects\rmedInventory\trunk\inventory\bin\Debug\data.dll
2006-12-27 04:51:49,343 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Adding referenced assembly C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll
2006-12-27 04:51:49,343 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Adding referenced assembly C:\WINDOWS\assembly\GAC_32\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll
2006-12-27 04:51:49,343 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Adding referenced assembly C:\WINDOWS\assembly\GAC_MSIL\nunit.framework\2.2.8.0__96d09a1eb7f44a77\nunit.framework.dll
2006-12-27 04:51:49,343 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Adding referenced assembly C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Compiled with error:
using System;
using NHibernate.Property;
namespace NHibernate.Persister {
public class GetSetHelper_data_Item : IGetSetHelper {
ISetter[] setters;
IGetter[] getters;
public GetSetHelper_data_Item(ISetter[] setters, IGetter[] getters) {
this.setters = setters;
this.getters = getters;
}
public void SetPropertyValues(object obj, object[] values) {
data.Item t = (data.Item)obj;
try
{
t.Vendor = (data.Vendor)values[0];
t.Amount = values[1] == null ? new System.Decimal() : (System.Decimal)values[1];
t.LastChange = values[2] == null ? new System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]() : (System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]])values[2];
t.Purity = values[3] == null ? new System.Nullable`1[[System.Double, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]() : (System.Nullable`1[[System.Double, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]])values[3];
t.CASNum = (data.CASNum)values[4];
t.CatNum = (System.String)values[5];
snip several similar lines of code
setters[20].Set(obj, values[20]);
}
catch( InvalidCastException ice )
{
throw new MappingException(
"Invalid mapping information specified for type " + obj.GetType() + ", check your mapping file for property type mismatches",
ice);
}
}
public object[] GetPropertyValues(object obj) {
data.Item t = (data.Item)obj;
object[] ret = new object[21];
ret[0] = t.Vendor;
ret[1] = t.Amount;
ret[2] = t.LastChange;
ret[3] = t.Purity;
ret[4] = t.CASNum;
ret[5] = t.CatNum;
snip several similar lines of code
ret[20] = getters[20].Get(obj);
return ret;
}
}
}

2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:17, Column:57 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:17, Column:176 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:18, Column:53 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:18, Column:170 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:21, Column:60 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:21, Column:178 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:22, Column:63 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:22, Column:179 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:24, Column:52 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:24, Column:170 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:27, Column:62 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:27, Column:178 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:29, Column:61 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:29, Column:180 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:33, Column:58 Message:Unexpected character '`'
2006-12-27 04:51:49,453 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Line:33, Column:174 Message:Unexpected character '`'
2006-12-27 04:51:49,468 [5308] INFO NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - Disabling reflection optimizer for class data.Item
2006-12-27 04:51:49,468 [5308] DEBUG NHibernate.Persister.GetSetHelperFactory [(null)] <(null)> - CodeDOM compilation failed
System.InvalidOperationException: Unexpected character '`'
at NHibernate.Persister.GetSetHelperFactory.Build(String code)
at NHibernate.Persister.GetSetHelperFactory.CreateGetSetHelper()


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jun 18, 2007 5:16 am 
Newbie

Joined: Mon Jun 18, 2007 5:11 am
Posts: 1
I'm encountering exactly the same problem using NHibernate version 1.0.4.
I'd like to know if there is a solutions/workaround available for this problem.
Cheers, Peter


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jun 18, 2007 5:55 am 
Contributor
Contributor

Joined: Wed May 11, 2005 4:59 pm
Posts: 1766
Location: Prague, Czech Republic
This is a known problem. Either disable the optimizer (set hibernate.use_reflection_optimizer to false in app.config/web.config) or upgrade to NHibernate 1.2 which uses a different implementation.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.