@@ -21,13 +21,36 @@ public ColumnCollectionAliases(IDictionary<string, string[]> userProvidedAliases
21
21
{
22
22
this . userProvidedAliases = userProvidedAliases ;
23
23
24
- keyAliases = GetUserProvidedAliases ( "key" , persister . KeyColumnNames ) ;
24
+ this . keyAliases = GetUserProvidedAliases ( "key" , persister . KeyColumnNames ) ;
25
+ this . indexAliases = GetUserProvidedAliases ( "index" , persister . IndexColumnNames ) ;
26
+ this . elementAliases = GetUserProvidedAliases ( "element" , persister . ElementColumnNames ) ;
25
27
26
- indexAliases = GetUserProvidedAliases ( "index" , persister . IndexColumnNames ) ;
28
+ // NH-1612: Add aliases for all composite element properties to support access
29
+ // to individual composite element properties in <return-property> elements.
30
+ this . elementAliases = persister . ElementType . IsComponentType
31
+ ? GetUserProvidedCompositeElementAliases ( persister . ElementColumnNames )
32
+ : GetUserProvidedAliases ( "element" , persister . ElementColumnNames ) ;
27
33
28
- elementAliases = GetUserProvidedAliases ( "element" , persister . ElementColumnNames ) ;
34
+ this . identifierAlias = GetUserProvidedAlias ( "id" , persister . IdentifierColumnName ) ;
35
+ }
29
36
30
- identifierAlias = GetUserProvidedAlias ( "id" , persister . IdentifierColumnName ) ;
37
+ private string [ ] GetUserProvidedCompositeElementAliases ( string [ ] defaultAliases )
38
+ {
39
+ if ( userProvidedAliases != null )
40
+ {
41
+ var aliases = new List < string > ( ) ;
42
+ foreach ( var userProvidedAlias in userProvidedAliases )
43
+ {
44
+ if ( userProvidedAlias . Key . StartsWith ( "element." ) )
45
+ {
46
+ aliases . AddRange ( userProvidedAlias . Value ) ;
47
+ }
48
+ }
49
+
50
+ if ( aliases . Count > 0 ) return aliases . ToArray ( ) ;
51
+ }
52
+
53
+ return defaultAliases ;
31
54
}
32
55
33
56
/// <summary>
@@ -96,27 +119,17 @@ private static string Join(IEnumerable aliases)
96
119
private string [ ] GetUserProvidedAliases ( string propertyPath , string [ ] defaultAliases )
97
120
{
98
121
string [ ] result ;
99
- if ( ! userProvidedAliases . TryGetValue ( propertyPath , out result ) )
100
- {
101
- return defaultAliases ;
102
- }
103
- else
104
- {
105
- return result ;
106
- }
122
+ return userProvidedAliases == null || ! userProvidedAliases . TryGetValue ( propertyPath , out result )
123
+ ? defaultAliases
124
+ : result ;
107
125
}
108
126
109
127
private string GetUserProvidedAlias ( string propertyPath , string defaultAlias )
110
128
{
111
129
string [ ] columns ;
112
- if ( ! userProvidedAliases . TryGetValue ( propertyPath , out columns ) )
113
- {
114
- return defaultAlias ;
115
- }
116
- else
117
- {
118
- return columns [ 0 ] ;
119
- }
130
+ return userProvidedAliases == null || ! userProvidedAliases . TryGetValue ( propertyPath , out columns )
131
+ ? defaultAlias
132
+ : columns [ 0 ] ;
120
133
}
121
134
}
122
135
}
0 commit comments