@@ -26,7 +26,7 @@ namespace NHibernate.Test.Hql
26
26
[ TestFixture ]
27
27
public class EntityJoinHqlTestAsync : TestCaseMappingByCode
28
28
{
29
- private const string _customEntityName = "CustomEntityName" ;
29
+ private const string _customEntityName = "CustomEntityName.Test " ;
30
30
private EntityWithCompositeId _entityWithCompositeId ;
31
31
private EntityWithNoAssociation _noAssociation ;
32
32
private EntityCustomEntityName _entityWithCustomEntityName ;
@@ -51,6 +51,46 @@ public async Task CanJoinNotAssociatedEntityAsync()
51
51
}
52
52
}
53
53
54
+ [ Test ]
55
+ public async Task CanJoinNotAssociatedEntityFullNameAsync ( )
56
+ {
57
+ using ( var sqlLog = new SqlLogSpy ( ) )
58
+ using ( var session = OpenSession ( ) )
59
+ {
60
+ EntityComplex entityComplex =
61
+ await ( session
62
+ . CreateQuery ( "select ex " +
63
+ "from EntityWithNoAssociation root " +
64
+ $ "left join { typeof ( EntityComplex ) . FullName } ex with root.Complex1Id = ex.Id")
65
+ . SetMaxResults ( 1 )
66
+ . UniqueResultAsync < EntityComplex > ( ) ) ;
67
+
68
+ Assert . That ( entityComplex , Is . Not . Null ) ;
69
+ Assert . That ( NHibernateUtil . IsInitialized ( entityComplex ) , Is . True ) ;
70
+ Assert . That ( sqlLog . Appender . GetEvents ( ) . Length , Is . EqualTo ( 1 ) , "Only one SQL select is expected" ) ;
71
+ }
72
+ }
73
+
74
+ [ Test ]
75
+ public async Task CanJoinNotAssociatedInterfaceFullNameAsync ( )
76
+ {
77
+ using ( var sqlLog = new SqlLogSpy ( ) )
78
+ using ( var session = OpenSession ( ) )
79
+ {
80
+ EntityComplex entityComplex =
81
+ await ( session
82
+ . CreateQuery ( "select ex " +
83
+ "from EntityWithNoAssociation root " +
84
+ $ "left join { typeof ( IEntityComplex ) . FullName } ex with root.Complex1Id = ex.Id")
85
+ . SetMaxResults ( 1 )
86
+ . UniqueResultAsync < EntityComplex > ( ) ) ;
87
+
88
+ Assert . That ( entityComplex , Is . Not . Null ) ;
89
+ Assert . That ( NHibernateUtil . IsInitialized ( entityComplex ) , Is . True ) ;
90
+ Assert . That ( sqlLog . Appender . GetEvents ( ) . Length , Is . EqualTo ( 1 ) , "Only one SQL select is expected" ) ;
91
+ }
92
+ }
93
+
54
94
[ Test ]
55
95
public async Task CanJoinNotAssociatedEntity_OnKeywordAsync ( )
56
96
{
@@ -302,8 +342,18 @@ public async Task NullableEntityProjectionAsync()
302
342
303
343
var fullList = await ( session . Query < NullableOwner > ( ) . Select ( x => new { x . Name , ManyToOneId = ( Guid ? ) x . ManyToOne . Id } ) . ToListAsync ( ) ) ;
304
344
var withValidManyToOneList = await ( session . Query < NullableOwner > ( ) . Where ( x => x . ManyToOne != null ) . Select ( x => new { x . Name , ManyToOneId = ( Guid ? ) x . ManyToOne . Id } ) . ToListAsync ( ) ) ;
345
+ var withValidManyToOneList2 = await ( session . CreateQuery ( "from NullableOwner ex where not ex.ManyToOne is null" ) . ListAsync < NullableOwner > ( ) ) ;
346
+ var withNullManyToOneList = await ( session . Query < NullableOwner > ( ) . Where ( x => x . ManyToOne == null ) . ToListAsync ( ) ) ;
347
+ var withNullManyToOneJoinedList =
348
+ await ( ( from x in session . Query < NullableOwner > ( )
349
+ from x2 in session . Query < NullableOwner > ( )
350
+ where x == x2 && x . ManyToOne == null && x . OneToOne . Name == null
351
+ select x2 ) . ToListAsync ( ) ) ;
305
352
Assert . That ( fullList . Count , Is . EqualTo ( 2 ) ) ;
306
353
Assert . That ( withValidManyToOneList . Count , Is . EqualTo ( 0 ) ) ;
354
+ Assert . That ( withValidManyToOneList2 . Count , Is . EqualTo ( 0 ) ) ;
355
+ Assert . That ( withNullManyToOneList . Count , Is . EqualTo ( 2 ) ) ;
356
+ Assert . That ( withNullManyToOneJoinedList . Count , Is . EqualTo ( 2 ) ) ;
307
357
}
308
358
}
309
359
0 commit comments