|
From: <ric...@us...> - 2009-09-26 12:07:51
|
Revision: 4728
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4728&view=rev
Author: ricbrown
Date: 2009-09-26 12:07:41 +0000 (Sat, 26 Sep 2009)
Log Message:
-----------
Fix NH-1975, using primitive with QueryOver.
Patch supplied by Ken Tong.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Impl/ExpressionProcessor.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/QueryOverFixture.cs
Modified: trunk/nhibernate/src/NHibernate/Impl/ExpressionProcessor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Impl/ExpressionProcessor.cs 2009-09-25 21:59:02 UTC (rev 4727)
+++ trunk/nhibernate/src/NHibernate/Impl/ExpressionProcessor.cs 2009-09-26 12:07:41 UTC (rev 4728)
@@ -261,6 +261,9 @@
if (type.IsEnum)
return Enum.ToObject(type, value);
+ if (type.IsPrimitive)
+ return Convert.ChangeType(value, type);
+
throw new Exception("Cannot convert '" + value.ToString() + "' to " + type.ToString());
}
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Mappings.hbm.xml 2009-09-25 21:59:02 UTC (rev 4727)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Mappings.hbm.xml 2009-09-26 12:07:41 UTC (rev 4728)
@@ -9,6 +9,7 @@
</id>
<property name="Name" />
<property name="Age" />
+ <property name="Blood" />
</class>
<class name="Child">
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs 2009-09-25 21:59:02 UTC (rev 4727)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs 2009-09-26 12:07:41 UTC (rev 4728)
@@ -23,6 +23,7 @@
public virtual bool HasCar { get; set; }
public virtual Person Father { get; set; }
public virtual bool IsParent { get; set; }
+ public virtual char Blood { get; set; }
public virtual IEnumerable<Child> Children { get; set; }
public virtual IList<Person> PersonList { get; set; }
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/QueryOverFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/QueryOverFixture.cs 2009-09-25 21:59:02 UTC (rev 4727)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/QueryOverFixture.cs 2009-09-26 12:07:41 UTC (rev 4728)
@@ -67,6 +67,22 @@
}
[Test]
+ public void SimpleCriterion_Char()
+ {
+ ICriteria expected =
+ CreateTestCriteria(typeof(Person))
+ .Add(Restrictions.Eq("Blood", 'A'))
+ .Add(Restrictions.Not(Restrictions.Eq("Blood", 'B')));
+
+ IQueryOver<Person> actual =
+ CreateTestQueryOver<Person>()
+ .And(p => p.Blood == 'A')
+ .And(p => p.Blood != 'B');
+
+ AssertCriteriaAreEqual(expected, actual);
+ }
+
+ [Test]
public void MultipleCriterionExpression()
{
ICriteria expected =
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|