Skip to content

Commit 88d966c

Browse files
committed
Merge branch '3.4.x'
2 parents 2eb3fa4 + 7cb5024 commit 88d966c

File tree

7 files changed

+303
-0
lines changed

7 files changed

+303
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Collections.Generic;
2+
3+
namespace NHibernate.Test.NHSpecificTest.NH1863
4+
{
5+
public class Customer
6+
{
7+
private ISet<Category> _categories = new HashSet<Category>();
8+
9+
public virtual int Id { get; set; }
10+
11+
public virtual string Name { get; set; }
12+
13+
public virtual ISet<Category> Categories
14+
{
15+
get { return _categories; }
16+
set { _categories = value; }
17+
}
18+
}
19+
20+
public class Category
21+
{
22+
public virtual int Id { get; set; }
23+
24+
public virtual bool IsActive { get; set; }
25+
}
26+
27+
}
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
using System.Collections.Generic;
2+
using NHibernate.Criterion;
3+
using NUnit.Framework;
4+
5+
namespace NHibernate.Test.NHSpecificTest.NH1863
6+
{
7+
[TestFixture]
8+
public class Fixture : BugTestCase
9+
{
10+
protected override void OnSetUp()
11+
{
12+
using (ISession s = OpenSession())
13+
{
14+
using (ITransaction tx = s.BeginTransaction())
15+
{
16+
var category = new Category {IsActive = true};
17+
s.Save(category);
18+
19+
var customerWithCategory = new Customer {Name = "HasCategory"};
20+
customerWithCategory.Categories.Add(category);
21+
s.Save(customerWithCategory);
22+
23+
var customerWithNoCategory = new Customer {Name = "HasNoCategory"};
24+
s.Save(customerWithNoCategory);
25+
26+
tx.Commit();
27+
}
28+
}
29+
}
30+
31+
protected override void OnTearDown()
32+
{
33+
using (ISession s = OpenSession())
34+
{
35+
using (ITransaction tx = s.BeginTransaction())
36+
{
37+
s.Delete("from Customer");
38+
s.Delete("from Category");
39+
tx.Commit();
40+
}
41+
}
42+
}
43+
44+
[Test]
45+
public void CanGetCustomerWithCategoryWhenFilterIsEnabled()
46+
{
47+
using (ISession session = OpenSession())
48+
{
49+
IFilter filter = session.EnableFilter("onlyActive");
50+
filter.SetParameter("activeFlag", 1);
51+
52+
ICriteria hasCategoryCriteria = session.CreateCriteria(typeof (Customer));
53+
hasCategoryCriteria.Add(Restrictions.Eq("Name", "HasCategory"));
54+
IList<Customer> hasCategoryResult = hasCategoryCriteria.List<Customer>();
55+
56+
Assert.That(hasCategoryResult.Count, Is.EqualTo(1));
57+
}
58+
59+
}
60+
61+
[Test]
62+
public void CanGetCustomerWithCategoryWhenFilterIsDisabled()
63+
{
64+
using (ISession session = OpenSession())
65+
{
66+
session.DisableFilter("onlyActive");
67+
68+
ICriteria hasCategoryCriteria = session.CreateCriteria(typeof (Customer));
69+
hasCategoryCriteria.Add(Restrictions.Eq("Name", "HasCategory"));
70+
IList<Customer> hasCategoryResult = hasCategoryCriteria.List<Customer>();
71+
72+
Assert.That(hasCategoryResult.Count, Is.EqualTo(1));
73+
}
74+
}
75+
76+
[Test]
77+
public void CanGetCustomerWithNoCategoryWhenFilterIsEnabled()
78+
{
79+
using (ISession session = OpenSession())
80+
{
81+
IFilter filter = session.EnableFilter("onlyActive");
82+
filter.SetParameter("activeFlag", 1);
83+
84+
ICriteria hasNoCategoryCriteria = session.CreateCriteria(typeof (Customer));
85+
hasNoCategoryCriteria.Add(Restrictions.Eq("Name", "HasNoCategory"));
86+
IList<Customer> hasNoCategoryResult = hasNoCategoryCriteria.List<Customer>();
87+
88+
Assert.That(hasNoCategoryResult.Count, Is.EqualTo(1));
89+
}
90+
91+
}
92+
93+
[Test]
94+
public void CanGetCustomerWithNoCategoryWhenFilterIsDisabled()
95+
{
96+
using (ISession session = OpenSession())
97+
{
98+
session.DisableFilter("onlyActive");
99+
100+
ICriteria hasNoCategoryCriteria = session.CreateCriteria(typeof (Customer));
101+
hasNoCategoryCriteria.Add(Restrictions.Eq("Name", "HasNoCategory"));
102+
IList<Customer> hasNoCategoryResult = hasNoCategoryCriteria.List<Customer>();
103+
104+
Assert.That(hasNoCategoryResult.Count, Is.EqualTo(1));
105+
}
106+
107+
}
108+
}
109+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?xml version="1.0"?>
2+
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" namespace="NHibernate.Test.NHSpecificTest.NH1863">
3+
4+
<class name="Customer" table="Customer">
5+
<id name="Id" column="Id">
6+
<generator class="native" />
7+
</id>
8+
<property name="Name" not-null="true" />
9+
10+
<set name='Categories' lazy='false' fetch='join'>
11+
<key column='Category_Id' />
12+
<one-to-many class='Category' />
13+
<filter name='onlyActive' condition=':activeFlag = IsActive' />
14+
</set>
15+
16+
</class>
17+
18+
<class name="Category" table="Category">
19+
<id name="Id" column="Id">
20+
<generator class="native" />
21+
</id>
22+
<property name="IsActive" not-null="true" />
23+
24+
<filter name="onlyActive" condition=":activeFlag = IsActive" />
25+
</class>
26+
27+
<filter-def name="onlyActive">
28+
<filter-param name="activeFlag" type="int"/>
29+
</filter-def>
30+
31+
</hibernate-mapping>
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
using System.Collections.Generic;
2+
using NUnit.Framework;
3+
4+
namespace NHibernate.Test.NHSpecificTest.NH2049
5+
{
6+
[TestFixture]
7+
public class Fixture2049 : BugTestCase
8+
{
9+
protected override void OnSetUp()
10+
{
11+
base.OnSetUp();
12+
using (ISession session = OpenSession())
13+
using (var tx = session.BeginTransaction())
14+
{
15+
var p = new Person {Id = 1, Name = "Name"};
16+
session.Save(p);
17+
var ic = new IndividualCustomer {Deleted = false, Person = p, Id = 1};
18+
session.Save(ic);
19+
20+
var deletedPerson = new Person {Id = 2, Name = "Name Deleted"};
21+
session.Save(deletedPerson);
22+
var deletedCustomer = new IndividualCustomer {Deleted = true, Person = deletedPerson, Id = 2};
23+
session.Save(deletedCustomer);
24+
25+
tx.Commit();
26+
}
27+
}
28+
29+
30+
protected override void OnTearDown()
31+
{
32+
base.OnTearDown();
33+
using (ISession session = OpenSession())
34+
{
35+
session.Delete("from System.Object");
36+
session.Flush();
37+
}
38+
}
39+
40+
41+
[Test]
42+
[KnownBug("Known bug NH-2049.", "NHibernate.Exceptions.GenericADOException")]
43+
public void CanCriteriaQueryWithFilterOnJoinClassBaseClassProperty()
44+
{
45+
using (ISession session = OpenSession())
46+
{
47+
session.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
48+
IList<Person> persons = session.CreateCriteria(typeof (Person)).List<Person>();
49+
50+
Assert.That(persons, Has.Count.EqualTo(1));
51+
Assert.That(persons[0].Id, Is.EqualTo(1));
52+
Assert.That(persons[0].IndividualCustomer, Is.Not.Null);
53+
Assert.That(persons[0].IndividualCustomer.Id, Is.EqualTo(1));
54+
Assert.That(persons[0].IndividualCustomer.Deleted, Is.False);
55+
}
56+
}
57+
58+
59+
[Test]
60+
[KnownBug("Known bug NH-2049.", "NHibernate.Exceptions.GenericADOException")]
61+
public void CanHqlQueryWithFilterOnJoinClassBaseClassProperty()
62+
{
63+
using (ISession session = OpenSession())
64+
{
65+
session.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
66+
var persons = session.CreateQuery("from Person as person left join person.IndividualCustomer as indCustomer")
67+
.List<Person>();
68+
69+
Assert.That(persons, Has.Count.EqualTo(1));
70+
Assert.That(persons[0].Id, Is.EqualTo(1));
71+
Assert.That(persons[0].IndividualCustomer, Is.Not.Null);
72+
Assert.That(persons[0].IndividualCustomer.Id, Is.EqualTo(1));
73+
Assert.That(persons[0].IndividualCustomer.Deleted, Is.False);
74+
}
75+
}
76+
}
77+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test"
3+
namespace="NHibernate.Test.NHSpecificTest.NH2049" default-lazy="false">
4+
5+
<class name="Customer" abstract="true">
6+
<id name="Id">
7+
<generator class="assigned" />
8+
</id>
9+
<property name="Deleted" type="Boolean" not-null="true" />
10+
<filter name="DeletedCustomer" condition="Deleted = :deleted" />
11+
</class>
12+
13+
<joined-subclass name="IndividualCustomer" extends="Customer">
14+
<key column="IndividualCustomerID" />
15+
<many-to-one name="Person" class="Person" column="PersonID" not-null="true" unique="true" />
16+
</joined-subclass>
17+
18+
<class name="Person">
19+
<id name="Id">
20+
<generator class="assigned" />
21+
</id>
22+
<property name="Name" />
23+
<one-to-one name="IndividualCustomer" class="IndividualCustomer" property-ref="Person" />
24+
</class>
25+
26+
<filter-def name="DeletedCustomer">
27+
<filter-param name="deleted" type="Boolean"/>
28+
</filter-def>
29+
30+
</hibernate-mapping>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+

2+
3+
namespace NHibernate.Test.NHSpecificTest.NH2049
4+
{
5+
public abstract class Customer
6+
{
7+
public int Id { get; set; }
8+
public bool Deleted { get; set; }
9+
}
10+
11+
public class IndividualCustomer : Customer
12+
{
13+
public Person Person { get; set; }
14+
}
15+
16+
public class Person
17+
{
18+
public int Id { get; set; }
19+
public string Name { get; set; }
20+
21+
public IndividualCustomer IndividualCustomer { get; set; }
22+
}
23+
}

src/NHibernate.Test/NHibernate.Test.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,11 +713,15 @@
713713
<Compile Include="NHSpecificTest\NH3058\SampleTest.cs" />
714714
<Compile Include="NHSpecificTest\NH1818\DomainClass.cs" />
715715
<Compile Include="NHSpecificTest\NH1818\Fixture1818.cs" />
716+
<Compile Include="NHSpecificTest\NH1863\Domain.cs" />
717+
<Compile Include="NHSpecificTest\NH1863\Fixture.cs" />
716718
<Compile Include="MappingByCode\ExpliticMappingTests\ClassWithoutNamespaceTests.cs" />
717719
<Compile Include="NHSpecificTest\NH1882\Author.cs" />
718720
<Compile Include="NHSpecificTest\NH1882\Book.cs" />
719721
<Compile Include="NHSpecificTest\NH1882\Publisher.cs" />
720722
<Compile Include="NHSpecificTest\NH1882\TestCollectionInitializingDuringFlush.cs" />
723+
<Compile Include="NHSpecificTest\NH2049\Model.cs" />
724+
<Compile Include="NHSpecificTest\NH2049\Fixture2049.cs" />
721725
<Compile Include="NHSpecificTest\NH3614\Entity.cs" />
722726
<Compile Include="NHSpecificTest\NH3614\Fixture.cs" />
723727
<Compile Include="NHSpecificTest\NH3505\Student.cs" />
@@ -3053,6 +3057,8 @@
30533057
<EmbeddedResource Include="NHSpecificTest\NH3058\Mappings.hbm.xml" />
30543058
<EmbeddedResource Include="NHSpecificTest\NH2985\Mappings.hbm.xml" />
30553059
<EmbeddedResource Include="NHSpecificTest\NH1818\Mappings.hbm.xml" />
3060+
<EmbeddedResource Include="NHSpecificTest\NH2049\Mappings.hbm.xml" />
3061+
<EmbeddedResource Include="NHSpecificTest\NH1863\Mappings.hbm.xml" />
30563062
<EmbeddedResource Include="NHSpecificTest\NH3614\Mappings.hbm.xml" />
30573063
<EmbeddedResource Include="NHSpecificTest\NH3505\Mappings.hbm.xml" />
30583064
<EmbeddedResource Include="NHSpecificTest\NH3428\Mappings.hbm.xml" />

0 commit comments

Comments
 (0)