|
From: <te...@us...> - 2008-10-03 21:13:55
|
Revision: 3811
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3811&view=rev
Author: tehlike
Date: 2008-10-03 21:13:49 +0000 (Fri, 03 Oct 2008)
Log Message:
-----------
Added throw NotSupportedException statement when ISQLQuery is added. This fix doesn't solve the issue NH-1508, just temporarily let the user know about situation.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Document.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Person.cs
Modified: trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2008-10-03 21:11:48 UTC (rev 3810)
+++ trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2008-10-03 21:13:49 UTC (rev 3811)
@@ -797,12 +797,17 @@
private int AddQueryForLaterExecutionAndReturnIndexOfQuery(IQuery query)
{
+ ThrowNotSupportedIfSqlQuery(query);
((AbstractQueryImpl)query).SetIgnoreUknownNamedParameters(true);
queries.Add(query);
return queries.Count - 1;
}
+ protected void ThrowNotSupportedIfSqlQuery(IQuery query)
+ {
+ if (query is ISQLQuery)
+ throw new NotSupportedException("Sql queries in MultiQuery are currently not supported.");
+ }
-
#endregion
}
}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Document.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Document.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Document.cs 2008-10-03 21:13:49 UTC (rev 3811)
@@ -0,0 +1,27 @@
+namespace NHibernate.Test.NHSpecificTest.NH1508
+{
+ public class Document
+ {
+ private int id;
+ private Person person;
+ private string title;
+
+ public virtual int Id
+ {
+ get { return id; }
+ set { id = value; }
+ }
+
+ public virtual string Title
+ {
+ get { return title; }
+ set { title = value; }
+ }
+
+ public virtual Person Person
+ {
+ get { return person; }
+ set { person = value; }
+ }
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs 2008-10-03 21:13:49 UTC (rev 3811)
@@ -0,0 +1,92 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+using NHibernate.Criterion;
+
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH1508
+{
+ [TestFixture]
+ public class Fixture : BugTestCase
+ {
+ protected override void OnSetUp()
+ {
+ Person john = new Person();
+ john.Name = "John";
+
+ Document doc1 = new Document();
+ doc1.Person = john;
+ doc1.Title = "John's Doc";
+
+ Document doc2 = new Document();
+ doc2.Title = "Spec";
+ using (ISession session = OpenSession())
+ using (ITransaction tx = session.BeginTransaction())
+ {
+ session.Save(john);
+ session.Save(doc1);
+ session.Save(doc2);
+
+ tx.Commit();
+ }
+ }
+
+ protected override void OnTearDown()
+ {
+ using (ISession session = OpenSession())
+ using (ITransaction tx = session.BeginTransaction())
+ {
+ session.Delete("from Person");
+ session.Delete("from Document");
+ tx.Commit();
+ }
+ }
+
+ [Test]
+ public void DoesntThrowExceptionWhenHqlQueryIsGiven()
+ {
+ using (ISession session = OpenSession())
+ using (ITransaction tx = session.BeginTransaction())
+ {
+ IQuery sqlQuery = session.CreateQuery("from Document");
+ IMultiQuery q = session
+ .CreateMultiQuery()
+ .Add(sqlQuery);
+ q.List();
+ }
+ }
+
+ [Test]
+ [ExpectedException(typeof(NotSupportedException))]
+ public void ThrowsExceptionWhenSqlQueryIsGiven()
+ {
+ using (ISession session = OpenSession())
+ using (ITransaction tx = session.BeginTransaction())
+ {
+ ISQLQuery sqlQuery = session.CreateSQLQuery("select * from Document");
+ IMultiQuery q = session
+ .CreateMultiQuery()
+ .Add(sqlQuery);
+ q.List();
+ }
+ }
+
+ [Test]
+ [ExpectedException(typeof(NotSupportedException))]
+ public void ThrowsExceptionWhenNamedSqlQueryIsGiven()
+ {
+ using (ISession session = OpenSession())
+ using (ITransaction tx = session.BeginTransaction())
+ {
+
+ IMultiQuery q = session
+ .CreateMultiQuery()
+ .AddNamedQuery("SampleSqlQuery");
+ q.List();
+ }
+ }
+
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Mappings.hbm.xml 2008-10-03 21:13:49 UTC (rev 3811)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH1508">
+
+ <class name="Document">
+ <id name="Id">
+ <generator class="native"/>
+ </id>
+ <many-to-one name="Person" column="PersonID"/>
+ <property name="Title"/>
+ </class>
+
+ <class name="Person">
+ <id name="Id">
+ <generator class="native" />
+ </id>
+ <property name="Name"/>
+ </class>
+ <sql-query name="SampleSqlQuery">
+ <![CDATA[
+ SELECT PersonId from Document
+ ]]>
+ </sql-query>
+ <query name="SampleHqlQuery">
+ <![CDATA[
+ from Document
+ ]]>
+ </query>
+</hibernate-mapping>
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Person.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Person.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Person.cs 2008-10-03 21:13:49 UTC (rev 3811)
@@ -0,0 +1,20 @@
+namespace NHibernate.Test.NHSpecificTest.NH1508
+{
+ public class Person
+ {
+ private int id;
+ private string name;
+
+ public virtual int Id
+ {
+ get { return id; }
+ set { id = value; }
+ }
+
+ public virtual string Name
+ {
+ get { return name; }
+ set { name = value; }
+ }
+ }
+}
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-03 21:11:48 UTC (rev 3810)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-03 21:13:49 UTC (rev 3811)
@@ -495,6 +495,9 @@
<Compile Include="NHSpecificTest\NH1499\Person.cs" />
<Compile Include="NHSpecificTest\NH1502\Fixture.cs" />
<Compile Include="NHSpecificTest\NH1502\Person.cs" />
+ <Compile Include="NHSpecificTest\NH1508\Document.cs" />
+ <Compile Include="NHSpecificTest\NH1508\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH1508\Person.cs" />
<Compile Include="NHSpecificTest\NH280\Fixture.cs" />
<Compile Include="NHSpecificTest\NH280\Foo.cs" />
<Compile Include="NHSpecificTest\NH1018\Employee.cs" />
@@ -1481,6 +1484,7 @@
<EmbeddedResource Include="Cascade\JobBatch.hbm.xml" />
<EmbeddedResource Include="Deletetransient\Person.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH1508\Mappings.hbm.xml" />
<EmbeddedResource Include="GenericTest\OrderedSetGeneric\OrderedSetFixture.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1293\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1490\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|