Skip to content

Commit 11e8445

Browse files
committed
Test case
1 parent 342c01f commit 11e8445

File tree

3 files changed

+95
-0
lines changed

3 files changed

+95
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using System.Linq;
2+
using NUnit.Framework;
3+
4+
namespace NHibernate.Test.NHSpecificTest.GH3306NullableEntityCorrelatedSubquery
5+
{
6+
[TestFixture]
7+
public class Fixture : BugTestCase
8+
{
9+
private const string NAME_JOE = "Joe";
10+
private const string NAME_ALLEN = "Allen";
11+
12+
protected override void OnSetUp()
13+
{
14+
using var session = OpenSession();
15+
using var tx = session.BeginTransaction();
16+
var joe = new Customer {Name = NAME_JOE};
17+
session.Save(joe);
18+
19+
var allen = new Customer {Name = NAME_ALLEN};
20+
session.Save(allen);
21+
22+
var joeInvoice0 = new Invoice {Customer = joe, Number = 0};
23+
session.Save(joeInvoice0);
24+
25+
var allenInvoice1 = new Invoice {Customer = allen, Number = 1};
26+
session.Save(allenInvoice1);
27+
28+
tx.Commit();
29+
}
30+
31+
protected override void OnTearDown()
32+
{
33+
using var session = OpenSession();
34+
using var tx = session.BeginTransaction();
35+
session.Delete("from Invoice");
36+
session.Delete("from Customer");
37+
tx.Commit();
38+
}
39+
40+
[Test]
41+
public void NullableEntityInCorrelatedSubquery()
42+
{
43+
using var s = OpenSession();
44+
var customers = s.Query<Customer>().Where(c => c.Name == NAME_JOE);
45+
var results = s.Query<Invoice>().Where(i => customers.Any(c => c.Invoices.Any(ci => ci.Customer == i.Customer))).ToList();
46+
47+
Assert.That(results.Count, Is.EqualTo(1));
48+
}
49+
}
50+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
3+
assembly="NHibernate.Test"
4+
namespace="NHibernate.Test.NHSpecificTest.GH3306NullableEntityCorrelatedSubquery">
5+
6+
<class name="Customer" >
7+
<id name="ID" type="Int32">
8+
<generator class="native" />
9+
</id>
10+
<property name="Name" type="String" />
11+
12+
<set name="Invoices" inverse="true" >
13+
<key column="CustomerID"/>
14+
<one-to-many class="Invoice"/>
15+
</set>
16+
</class>
17+
18+
<class name="Invoice">
19+
<id name="ID" type="Int32">
20+
<generator class="native" />
21+
</id>
22+
23+
<property name="Number" type="Int32" column="`Number`" />
24+
<many-to-one name="Customer" not-found="ignore" column="CustomerID" class="Customer" />
25+
</class>
26+
27+
</hibernate-mapping>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System.Collections.Generic;
2+
3+
namespace NHibernate.Test.NHSpecificTest.GH3306NullableEntityCorrelatedSubquery
4+
{
5+
public class Customer
6+
{
7+
public virtual int ID { get; protected set; }
8+
public virtual ISet<Invoice> Invoices { get; set; }
9+
public virtual string Name { get; set; }
10+
}
11+
12+
public class Invoice
13+
{
14+
public virtual int ID { get; protected set; }
15+
public virtual Customer Customer { get; set; }
16+
public virtual int Number { get; set; }
17+
}
18+
}

0 commit comments

Comments
 (0)