Skip to content

Commit c47f316

Browse files
authored
Fix NRE in SchemaUpdate and SchemaExport Execute method for collection mappings (#2429)
1 parent 7fd1a9a commit c47f316

File tree

4 files changed

+38
-13
lines changed

4 files changed

+38
-13
lines changed

src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/HeavyEntity.hbm.xml

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,27 @@
44
assembly="NHibernate.Test"
55
default-lazy="false">
66

7-
<class name="Order">
8-
<id type="int">
9-
<generator class="native"/>
10-
</id>
11-
<property name="Select"/>
12-
<property name="From"/>
13-
<property name="And"/>
14-
<property name="Column"/>
15-
<property name="Name"/>
16-
<property name="Abracadabra"/>
17-
</class>
7+
<class name="Order">
8+
<id type="int">
9+
<generator class="native"/>
10+
</id>
11+
<property name="Select"/>
12+
<property name="From"/>
13+
<property name="And"/>
14+
<property name="Column"/>
15+
<property name="Name"/>
16+
<property name="Abracadabra"/>
17+
<set name="Rows" cascade="none">
18+
<key column="Order"/>
19+
<one-to-many class="OrderRow" />
20+
</set>
21+
</class>
22+
<class name="OrderRow">
23+
<id name="Id">
24+
<generator class="native"/>
25+
</id>
26+
<property name="Name"/>
27+
<many-to-one name="Order" column="Order" not-null="true"/>
28+
</class>
1829

19-
</hibernate-mapping>
30+
</hibernate-mapping>

src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/HeavyEntity.cs renamed to src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/Order.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using System.Collections.Generic;
2+
13
namespace NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest
24
{
35
public class Order
@@ -8,5 +10,6 @@ public class Order
810
public string Column { get; set; }
911
public string Name { get; set; }
1012
public string Abracadabra { get; set; }
13+
public ISet<OrderRow> Rows { get; set; }
1114
}
12-
}
15+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest
2+
{
3+
public class OrderRow
4+
{
5+
public int Id { get; set; }
6+
public Order Order { get; set; }
7+
public string Name { get; set; }
8+
}
9+
}

src/NHibernate/Tool/hbm2ddl/SchemaMetadataUpdater.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ public static void QuoteTableAndColumns(Configuration configuration)
5555

5656
public static void QuoteTableAndColumns(Configuration configuration, Dialect.Dialect dialect)
5757
{
58+
// We have to build the mappings in order to quote collection mappings that use a second pass command to be fully initialized
59+
configuration.BuildMappings();
5860
foreach (var cm in configuration.ClassMappings)
5961
{
6062
QuoteTable(cm.Table, dialect);

0 commit comments

Comments
 (0)