diff --git a/src/NHibernate.Test/NHSpecificTest/GH2621Enum/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/GH2621Enum/Fixture.cs new file mode 100644 index 00000000000..0ec20886442 --- /dev/null +++ b/src/NHibernate.Test/NHSpecificTest/GH2621Enum/Fixture.cs @@ -0,0 +1,20 @@ +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.GH2621Enum +{ + public class Fixture : BugTestCase + { + [Test] + public void TestOk() + { + using (var s = OpenSession()) + using (s.BeginTransaction()) + { + var query = s.CreateQuery( + @"SELECT Name FROM NHibernate.Test.NHSpecificTest.GH2621Enum.ClassWithString ROOT WHERE ROOT.Kind = :kind"); + query.SetParameter("kind", Kind.SomeKind); + Assert.DoesNotThrow(() => query.List()); + } + } + } +} diff --git a/src/NHibernate.Test/NHSpecificTest/GH2621Enum/Mappings.hbm.xml b/src/NHibernate.Test/NHSpecificTest/GH2621Enum/Mappings.hbm.xml new file mode 100644 index 00000000000..0da735748dc --- /dev/null +++ b/src/NHibernate.Test/NHSpecificTest/GH2621Enum/Mappings.hbm.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/src/NHibernate.Test/NHSpecificTest/GH2621Enum/Model.cs b/src/NHibernate.Test/NHSpecificTest/GH2621Enum/Model.cs new file mode 100644 index 00000000000..1a7cd35b5ff --- /dev/null +++ b/src/NHibernate.Test/NHSpecificTest/GH2621Enum/Model.cs @@ -0,0 +1,15 @@ +namespace NHibernate.Test.NHSpecificTest.GH2621Enum +{ + public abstract class ClassWithString + { + public virtual int Id { get; set; } + public virtual string Name { get; set; } + public virtual string Kind { get; set; } + } + + public enum Kind + { + SomeKind, + SomeOtherKind + } +} diff --git a/src/NHibernate/Type/AbstractStringType.cs b/src/NHibernate/Type/AbstractStringType.cs index 267ccec6da5..9d47aaf07ff 100644 --- a/src/NHibernate/Type/AbstractStringType.cs +++ b/src/NHibernate/Type/AbstractStringType.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Data.Common; using System.Globalization; @@ -58,6 +58,9 @@ public override void Set(DbCommand cmd, object value, int index, ISessionImpleme { var parameter = cmd.Parameters[index]; + if (value is Enum) + value = value.ToString(); + //Allow the driver to adjust the parameter for the value session.Factory.ConnectionProvider.Driver.AdjustParameterForValue(parameter, SqlType, value);