@@ -354,8 +354,9 @@ async Task AssertQueryAsync(bool fromCache)
354
354
. AddScalar ( "regionCode" , NHibernateUtil . String )
355
355
. SetResultTransformer ( Transformers . AliasToBean < ResultDto > ( ) )
356
356
. SetCacheable ( true ) ;
357
- var q2 = s . CreateSQLQuery ( "select org.ORGID as orgId from ORGANIZATION org" )
357
+ var q2 = s . CreateSQLQuery ( "select org.ORGID as orgId, org.NAME as regionCode from ORGANIZATION org" )
358
358
. AddScalar ( "orgId" , NHibernateUtil . Int64 )
359
+ . AddScalar ( "regionCode" , NHibernateUtil . String )
359
360
. SetResultTransformer ( Transformers . AliasToBean < ResultDto > ( ) )
360
361
. SetCacheable ( true ) ;
361
362
@@ -394,8 +395,9 @@ async Task AssertQueryAsync(bool fromCache)
394
395
. AddScalar ( "regionCode" , NHibernateUtil . String )
395
396
. SetResultTransformer ( Transformers . AliasToBean < ResultDto > ( ) )
396
397
. SetCacheable ( true ) ;
397
- var q2 = s . CreateSQLQuery ( "select org.ORGID as orgId from ORGANIZATION org" )
398
+ var q2 = s . CreateSQLQuery ( "select org.ORGID as orgId, org.NAME as regionCode from ORGANIZATION org" )
398
399
. AddScalar ( "orgId" , NHibernateUtil . Int64 )
400
+ . AddScalar ( "regionCode" , NHibernateUtil . String )
399
401
. SetResultTransformer ( Transformers . AliasToBean < ResultDto > ( ) )
400
402
. SetCacheable ( true ) ;
401
403
@@ -421,6 +423,43 @@ async Task AssertQueryAsync(bool fromCache)
421
423
await ( AssertQueryAsync ( true ) ) ;
422
424
}
423
425
426
+ [ Test ( Description = "GH-3169" ) ]
427
+ public async Task CacheableMultiScalarSqlQueryWithTransformerAsync ( )
428
+ {
429
+ Organization ifa = new Organization ( "IFA" ) ;
430
+
431
+ using ( ISession s = OpenSession ( ) )
432
+ using ( ITransaction t = s . BeginTransaction ( ) )
433
+ {
434
+ await ( s . SaveAsync ( ifa ) ) ;
435
+ await ( t . CommitAsync ( ) ) ;
436
+ }
437
+
438
+ async Task AssertQueryAsync ( bool fromCache )
439
+ {
440
+ using ( var s = OpenSession ( ) )
441
+ using ( var t = s . BeginTransaction ( ) )
442
+ using ( EnableStatisticsScope ( ) )
443
+ {
444
+ var l = await ( s . CreateSQLQuery ( "select org.ORGID as orgId, org.NAME as regionCode from ORGANIZATION org" )
445
+ . AddScalar ( "orgId" , NHibernateUtil . Int64 )
446
+ . AddScalar ( "regionCode" , NHibernateUtil . String )
447
+ . SetResultTransformer ( Transformers . AliasToBean < ResultDto > ( ) )
448
+ . SetCacheable ( true )
449
+ . ListAsync ( ) ) ;
450
+ await ( t . CommitAsync ( ) ) ;
451
+
452
+ Assert . That ( l . Count , Is . EqualTo ( 1 ) ) ;
453
+ var msg = "Results are expected from " + ( fromCache ? "cache" : "DB" ) ;
454
+ Assert . That ( Sfi . Statistics . QueryCacheMissCount , Is . EqualTo ( fromCache ? 0 : 1 ) , msg ) ;
455
+ Assert . That ( Sfi . Statistics . QueryCacheHitCount , Is . EqualTo ( fromCache ? 1 : 0 ) , msg ) ;
456
+ }
457
+ }
458
+
459
+ await ( AssertQueryAsync ( false ) ) ;
460
+ await ( AssertQueryAsync ( true ) ) ;
461
+ }
462
+
424
463
[ Test ]
425
464
public async Task ResultSetMappingDefinitionAsync ( )
426
465
{
0 commit comments