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. |