@@ -38,6 +38,8 @@ public class CustomLoader : Loader
38
38
private readonly LockMode [ ] lockModes ;
39
39
private readonly ResultRowProcessor rowProcessor ;
40
40
41
+ private readonly bool [ ] includeInResultRow ;
42
+
41
43
private IType [ ] resultTypes ;
42
44
private string [ ] transformerAliases ;
43
45
@@ -61,6 +63,8 @@ public CustomLoader(ICustomQuery customQuery, ISessionFactoryImplementor factory
61
63
List < IType > resulttypes = new List < IType > ( ) ;
62
64
List < string > specifiedAliases = new List < string > ( ) ;
63
65
66
+ List < bool > includeInResultRowList = new List < bool > ( ) ;
67
+
64
68
int returnableCounter = 0 ;
65
69
bool hasScalars = false ;
66
70
@@ -72,6 +76,7 @@ public CustomLoader(ICustomQuery customQuery, ISessionFactoryImplementor factory
72
76
resulttypes . Add ( scalarRtn . Type ) ;
73
77
specifiedAliases . Add ( scalarRtn . ColumnAlias ) ;
74
78
resultColumnProcessors . Add ( new ScalarResultColumnProcessor ( scalarRtn . ColumnAlias , scalarRtn . Type ) ) ;
79
+ includeInResultRowList . Add ( true ) ;
75
80
hasScalars = true ;
76
81
}
77
82
else if ( rtn is RootReturn )
@@ -87,6 +92,7 @@ public CustomLoader(ICustomQuery customQuery, ISessionFactoryImplementor factory
87
92
specifiedAliases . Add ( rootRtn . Alias ) ;
88
93
entityaliases . Add ( rootRtn . EntityAliases ) ;
89
94
querySpaces . UnionWith ( persister . QuerySpaces ) ;
95
+ includeInResultRowList . Add ( true ) ;
90
96
}
91
97
else if ( rtn is CollectionReturn )
92
98
{
@@ -111,6 +117,7 @@ public CustomLoader(ICustomQuery customQuery, ISessionFactoryImplementor factory
111
117
entityaliases . Add ( collRtn . ElementEntityAliases ) ;
112
118
querySpaces . UnionWith ( elementPersister . QuerySpaces ) ;
113
119
}
120
+ includeInResultRowList . Add ( true ) ;
114
121
}
115
122
else if ( rtn is EntityFetchReturn )
116
123
{
@@ -128,6 +135,7 @@ public CustomLoader(ICustomQuery customQuery, ISessionFactoryImplementor factory
128
135
specifiedAliases . Add ( fetchRtn . Alias ) ;
129
136
entityaliases . Add ( fetchRtn . EntityAliases ) ;
130
137
querySpaces . UnionWith ( persister . QuerySpaces ) ;
138
+ includeInResultRowList . Add ( false ) ;
131
139
}
132
140
else if ( rtn is CollectionFetchReturn )
133
141
{
@@ -153,6 +161,7 @@ public CustomLoader(ICustomQuery customQuery, ISessionFactoryImplementor factory
153
161
entityaliases . Add ( fetchRtn . ElementEntityAliases ) ;
154
162
querySpaces . UnionWith ( elementPersister . QuerySpaces ) ;
155
163
}
164
+ includeInResultRowList . Add ( false ) ;
156
165
}
157
166
else
158
167
{
@@ -170,6 +179,7 @@ public CustomLoader(ICustomQuery customQuery, ISessionFactoryImplementor factory
170
179
resultTypes = resulttypes . ToArray ( ) ;
171
180
transformerAliases = specifiedAliases . ToArray ( ) ;
172
181
rowProcessor = new ResultRowProcessor ( hasScalars , resultColumnProcessors . ToArray ( ) ) ;
182
+ includeInResultRow = includeInResultRowList . ToArray ( ) ;
173
183
}
174
184
175
185
public ISet < string > QuerySpaces
@@ -289,6 +299,11 @@ protected override IResultTransformer ResolveResultTransformer(IResultTransforme
289
299
return HolderInstantiator . ResolveResultTransformer ( null , resultTransformer ) ;
290
300
}
291
301
302
+ protected override bool [ ] IncludeInResultRow
303
+ {
304
+ get { return includeInResultRow ; }
305
+ }
306
+
292
307
public override IList GetResultList ( IList results , IResultTransformer resultTransformer )
293
308
{
294
309
// meant to handle dynamic instantiation queries...(Copy from QueryLoader)
0 commit comments