From: <ric...@us...> - 2009-09-08 11:14:38
|
Revision: 4708 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4708&view=rev Author: ricbrown Date: 2009-09-08 11:14:30 +0000 (Tue, 08 Sep 2009) Log Message: ----------- Merge r4707 (Fix NH-1938) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Criterion/LikeExpression.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Model.cs Modified: trunk/nhibernate/src/NHibernate/Criterion/LikeExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/LikeExpression.cs 2009-09-08 11:13:42 UTC (rev 4707) +++ trunk/nhibernate/src/NHibernate/Criterion/LikeExpression.cs 2009-09-08 11:14:30 UTC (rev 4708) @@ -74,7 +74,19 @@ lhs.Add(columns[0]); criteriaQuery.AddUsedTypedValues(GetTypedValues(criteria, criteriaQuery)); - lhs.Add(" like ").AddParameter(); + + if (ignoreCase) + { + Dialect.Dialect dialect = criteriaQuery.Factory.Dialect; + lhs.Add(" like ") + .Add(dialect.LowercaseFunction) + .Add(StringHelper.OpenParen) + .AddParameter() + .Add(StringHelper.ClosedParen); + } + else + lhs.Add(" like ").AddParameter(); + if (escapeChar.HasValue) lhs.Add(" escape '" + escapeChar + "'"); return lhs.ToSqlString(); Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938 ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Fixture.cs 2009-09-08 11:14:30 UTC (rev 4708) @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using NUnit.Framework; +using NHibernate.Criterion; + +namespace NHibernate.Test.NHSpecificTest.NH1938 +{ + [TestFixture] + public class Fixture : BugTestCase + { + + protected override bool AppliesTo(NHibernate.Dialect.Dialect dialect) + { + // Database needs to be case-sensitive + return (dialect is NHibernate.Dialect.Oracle10gDialect); + } + + [Test] + public void Can_Query_By_Example_Case_Insensitive() + { + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.Save(new Person() { Name = "John Smith" }); + + Person examplePerson = new Person() { Name = "oHn" }; + IList<Person> matchingPeople; + + matchingPeople = + s.CreateCriteria<Person>() + .Add(Example + .Create(examplePerson) + .EnableLike(MatchMode.Anywhere) + .IgnoreCase()) + .List<Person>(); + + Assert.That(matchingPeople.Count, Is.EqualTo(1)); + + matchingPeople = + s.CreateCriteria<Person>() + .Add(Example + .Create(examplePerson) + .EnableLike(MatchMode.Anywhere)) + .List<Person>(); + + Assert.That(matchingPeople.Count, Is.EqualTo(0)); + + t.Rollback(); + } + } + + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Mappings.hbm.xml 2009-09-08 11:14:30 UTC (rev 4708) @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1938"> + + <class name="Person"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="Name"/> + </class> + +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Model.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Model.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Model.cs 2009-09-08 11:14:30 UTC (rev 4708) @@ -0,0 +1,19 @@ +using System; +using System.Xml.Serialization; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +using NHibernate; +using NHibernate.Classic; + +namespace NHibernate.Test.NHSpecificTest.NH1938 +{ + + public class Person + { + public virtual int Id { get; set; } + public virtual string Name { get; set; } + } + +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-09-08 11:13:42 UTC (rev 4707) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-09-08 11:14:30 UTC (rev 4708) @@ -588,6 +588,8 @@ <Compile Include="NHSpecificTest\NH1914\Model.cs" /> <Compile Include="NHSpecificTest\NH1920\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1920\Model.cs" /> + <Compile Include="NHSpecificTest\NH1938\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1938\Model.cs" /> <Compile Include="NHSpecificTest\NH1939\AuxType.cs" /> <Compile Include="NHSpecificTest\NH1939\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> @@ -2003,6 +2005,7 @@ <EmbeddedResource Include="Criteria\Lambda\Mappings.hbm.xml" /> <EmbeddedResource Include="CfgTest\Loquacious\EntityToCache.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1938\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1905\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1939\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1911\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |