@@ -112,6 +112,9 @@ public void ScrollCriteria()
112
112
[ Test ]
113
113
public void AllowToSetLimitOnSubqueries ( )
114
114
{
115
+ if ( ! Dialect . SupportsScalarSubSelects )
116
+ Assert . Ignore ( Dialect . GetType ( ) . Name + " does not support scalar sub-queries" ) ;
117
+
115
118
using ( ISession session = OpenSession ( ) )
116
119
{
117
120
DetachedCriteria dc = DetachedCriteria . For ( typeof ( Student ) )
@@ -129,6 +132,9 @@ public void AllowToSetLimitOnSubqueries()
129
132
[ Test ]
130
133
public void TestSubcriteriaBeingNull ( )
131
134
{
135
+ if ( ! Dialect . SupportsScalarSubSelects )
136
+ Assert . Ignore ( Dialect . GetType ( ) . Name + " does not support scalar sub-queries" ) ;
137
+
132
138
ISession session = OpenSession ( ) ;
133
139
ITransaction t = session . BeginTransaction ( ) ;
134
140
@@ -205,37 +211,40 @@ public void Subselect()
205
211
. Add ( Subqueries . In ( "Gavin King" , dc ) )
206
212
. List ( ) ;
207
213
208
- DetachedCriteria dc2 = DetachedCriteria . For ( typeof ( Student ) , "st" )
209
- . Add ( Property . ForName ( "st.StudentNumber" ) . EqProperty ( "e.StudentNumber" ) )
210
- . SetProjection ( Property . ForName ( "Name" ) ) ;
214
+ if ( Dialect . SupportsScalarSubSelects )
215
+ {
216
+ DetachedCriteria dc2 = DetachedCriteria . For ( typeof ( Student ) , "st" )
217
+ . Add ( Property . ForName ( "st.StudentNumber" ) . EqProperty ( "e.StudentNumber" ) )
218
+ . SetProjection ( Property . ForName ( "Name" ) ) ;
211
219
212
- session . CreateCriteria ( typeof ( Enrolment ) , "e" )
213
- . Add ( Subqueries . Eq ( "Gavin King" , dc2 ) )
214
- . List ( ) ;
220
+ session . CreateCriteria ( typeof ( Enrolment ) , "e" )
221
+ . Add ( Subqueries . Eq ( "Gavin King" , dc2 ) )
222
+ . List ( ) ;
215
223
216
- DetachedCriteria dc3 = DetachedCriteria . For ( typeof ( Student ) , "st" )
217
- . CreateCriteria ( "Enrolments" )
218
- . CreateCriteria ( "Course" )
219
- . Add ( Property . ForName ( "Description" ) . Eq ( "Hibernate Training" ) )
220
- . SetProjection ( Property . ForName ( "st.Name" ) ) ;
224
+ DetachedCriteria dc3 = DetachedCriteria . For ( typeof ( Student ) , "st" )
225
+ . CreateCriteria ( "Enrolments" )
226
+ . CreateCriteria ( "Course" )
227
+ . Add ( Property . ForName ( "Description" ) . Eq ( "Hibernate Training" ) )
228
+ . SetProjection ( Property . ForName ( "st.Name" ) ) ;
221
229
222
- session . CreateCriteria ( typeof ( Enrolment ) , "e" )
223
- . Add ( Subqueries . Eq ( "Gavin King" , dc3 ) )
224
- . List ( ) ;
230
+ session . CreateCriteria ( typeof ( Enrolment ) , "e" )
231
+ . Add ( Subqueries . Eq ( "Gavin King" , dc3 ) )
232
+ . List ( ) ;
225
233
226
- DetachedCriteria courseCriteria = DetachedCriteria . For ( typeof ( Course ) )
227
- . Add ( Property . ForName ( "Description" ) . Eq ( "Hibernate Training" ) )
228
- . SetProjection ( Projections . Property ( "CourseCode" ) ) ;
234
+ DetachedCriteria courseCriteria = DetachedCriteria . For ( typeof ( Course ) )
235
+ . Add ( Property . ForName ( "Description" ) . Eq ( "Hibernate Training" ) )
236
+ . SetProjection ( Projections . Property ( "CourseCode" ) ) ;
229
237
230
- DetachedCriteria enrolmentCriteria = DetachedCriteria . For ( typeof ( Enrolment ) )
231
- . Add ( Property . ForName ( "CourseCode" ) . Eq ( courseCriteria ) )
232
- . SetProjection ( Projections . Property ( "CourseCode" ) ) ;
238
+ DetachedCriteria enrolmentCriteria = DetachedCriteria . For ( typeof ( Enrolment ) )
239
+ . Add ( Property . ForName ( "CourseCode" ) . Eq ( courseCriteria ) )
240
+ . SetProjection ( Projections . Property ( "CourseCode" ) ) ;
233
241
234
- DetachedCriteria studentCriteria = DetachedCriteria . For ( typeof ( Student ) )
235
- . Add ( Subqueries . Exists ( enrolmentCriteria ) ) ;
242
+ DetachedCriteria studentCriteria = DetachedCriteria . For ( typeof ( Student ) )
243
+ . Add ( Subqueries . Exists ( enrolmentCriteria ) ) ;
236
244
237
- object result = studentCriteria . GetExecutableCriteria ( session ) . UniqueResult ( ) ;
238
- Assert . AreSame ( gavin , result ) ;
245
+ object result = studentCriteria . GetExecutableCriteria ( session ) . UniqueResult ( ) ;
246
+ Assert . AreSame ( gavin , result ) ;
247
+ }
239
248
240
249
session . Delete ( enrolment2 ) ;
241
250
session . Delete ( gavin ) ;
@@ -935,10 +944,13 @@ public void ProjectionsTest()
935
944
936
945
//s.flush();
937
946
938
- int count = ( int ) s . CreateCriteria ( typeof ( Enrolment ) )
939
- . SetProjection ( Projections . Count ( "StudentNumber" ) . SetDistinct ( ) )
940
- . UniqueResult ( ) ;
941
- Assert . AreEqual ( 2 , count ) ;
947
+ if ( TestDialect . SupportsCountDistinct )
948
+ {
949
+ int count = ( int ) s . CreateCriteria ( typeof ( Enrolment ) )
950
+ . SetProjection ( Projections . Count ( "StudentNumber" ) . SetDistinct ( ) )
951
+ . UniqueResult ( ) ;
952
+ Assert . AreEqual ( 2 , count ) ;
953
+ }
942
954
943
955
object obj = s . CreateCriteria ( typeof ( Enrolment ) )
944
956
. SetProjection ( Projections . ProjectionList ( )
@@ -1049,17 +1061,20 @@ public void ProjectionsTest()
1049
1061
. UniqueResult ( ) ;
1050
1062
Assert . AreEqual ( typeof ( Int64 ) , r . GetType ( ) ) ;
1051
1063
1052
- IList list = s . CreateCriteria ( typeof ( Enrolment ) )
1053
- . CreateAlias ( "Student" , "st" )
1054
- . CreateAlias ( "Course" , "co" )
1055
- . SetProjection ( Projections . ProjectionList ( )
1056
- . Add ( Projections . GroupProperty ( "co.CourseCode" ) )
1057
- . Add ( Projections . Count ( "st.StudentNumber" ) . SetDistinct ( ) )
1058
- . Add ( Projections . GroupProperty ( "Year" ) )
1059
- )
1060
- . List ( ) ;
1064
+ if ( TestDialect . SupportsCountDistinct )
1065
+ {
1066
+ IList list = s . CreateCriteria ( typeof ( Enrolment ) )
1067
+ . CreateAlias ( "Student" , "st" )
1068
+ . CreateAlias ( "Course" , "co" )
1069
+ . SetProjection ( Projections . ProjectionList ( )
1070
+ . Add ( Projections . GroupProperty ( "co.CourseCode" ) )
1071
+ . Add ( Projections . Count ( "st.StudentNumber" ) . SetDistinct ( ) )
1072
+ . Add ( Projections . GroupProperty ( "Year" ) )
1073
+ )
1074
+ . List ( ) ;
1061
1075
1062
- Assert . AreEqual ( 2 , list . Count ) ;
1076
+ Assert . AreEqual ( 2 , list . Count ) ;
1077
+ }
1063
1078
1064
1079
object g = s . CreateCriteria ( typeof ( Student ) )
1065
1080
. Add ( Expression . IdEq ( 667L ) )
@@ -1119,11 +1134,14 @@ public void CloningProjectionsTest()
1119
1134
1120
1135
//s.flush();
1121
1136
1122
- ICriteria criteriaToBeCloned = s . CreateCriteria ( typeof ( Enrolment ) )
1123
- . SetProjection ( Projections . Count ( "StudentNumber" ) . SetDistinct ( ) ) ;
1124
- int count = ( int ) CriteriaTransformer . Clone ( criteriaToBeCloned )
1125
- . UniqueResult ( ) ;
1126
- Assert . AreEqual ( 2 , count ) ;
1137
+ if ( TestDialect . SupportsCountDistinct )
1138
+ {
1139
+ ICriteria criteriaToBeCloned = s . CreateCriteria ( typeof ( Enrolment ) )
1140
+ . SetProjection ( Projections . Count ( "StudentNumber" ) . SetDistinct ( ) ) ;
1141
+ int count = ( int ) CriteriaTransformer . Clone ( criteriaToBeCloned )
1142
+ . UniqueResult ( ) ;
1143
+ Assert . AreEqual ( 2 , count ) ;
1144
+ }
1127
1145
1128
1146
ICriteria criteriaToClone = s . CreateCriteria ( typeof ( Enrolment ) )
1129
1147
. SetProjection ( Projections . ProjectionList ( )
@@ -1232,18 +1250,21 @@ public void CloningProjectionsTest()
1232
1250
1233
1251
Assert . AreEqual ( 7 , array . Length ) ;
1234
1252
1235
- ICriteria criteriaToClone5 = s . CreateCriteria ( typeof ( Enrolment ) )
1236
- . CreateAlias ( "Student" , "st" )
1237
- . CreateAlias ( "Course" , "co" )
1238
- . SetProjection ( Projections . ProjectionList ( )
1239
- . Add ( Projections . GroupProperty ( "co.CourseCode" ) )
1240
- . Add ( Projections . Count ( "st.StudentNumber" ) . SetDistinct ( ) )
1241
- . Add ( Projections . GroupProperty ( "Year" ) )
1242
- ) ;
1243
- IList list = CriteriaTransformer . Clone ( criteriaToClone5 )
1244
- . List ( ) ;
1253
+ if ( TestDialect . SupportsCountDistinct )
1254
+ {
1255
+ ICriteria criteriaToClone5 = s . CreateCriteria ( typeof ( Enrolment ) )
1256
+ . CreateAlias ( "Student" , "st" )
1257
+ . CreateAlias ( "Course" , "co" )
1258
+ . SetProjection ( Projections . ProjectionList ( )
1259
+ . Add ( Projections . GroupProperty ( "co.CourseCode" ) )
1260
+ . Add ( Projections . Count ( "st.StudentNumber" ) . SetDistinct ( ) )
1261
+ . Add ( Projections . GroupProperty ( "Year" ) )
1262
+ ) ;
1263
+ IList list = CriteriaTransformer . Clone ( criteriaToClone5 )
1264
+ . List ( ) ;
1245
1265
1246
- Assert . AreEqual ( 2 , list . Count ) ;
1266
+ Assert . AreEqual ( 2 , list . Count ) ;
1267
+ }
1247
1268
1248
1269
ICriteria criteriaToClone6 = s . CreateCriteria ( typeof ( Student ) )
1249
1270
. Add ( Expression . IdEq ( 667L ) )
@@ -1383,13 +1404,17 @@ public void ProjectionsUsingProperty()
1383
1404
Assert . That ( aResult [ 1 ] , Is . InstanceOf < string > ( ) ) ;
1384
1405
Assert . That ( aResult [ 2 ] , Is . InstanceOf < CityState > ( ) ) ;
1385
1406
Assert . That ( aResult [ 3 ] , Is . InstanceOf < Course > ( ) ) ;
1386
-
1407
+
1387
1408
// Subtest #5
1388
- int count = ( int ) s . CreateCriteria ( typeof ( Enrolment ) )
1389
- . SetProjection ( Property . ForName ( "StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1390
- . UniqueResult ( ) ;
1391
-
1392
- Assert . AreEqual ( 2 , count ) ;
1409
+
1410
+ if ( TestDialect . SupportsCountDistinct )
1411
+ {
1412
+ int count = ( int ) s . CreateCriteria ( typeof ( Enrolment ) )
1413
+ . SetProjection ( Property . ForName ( "StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1414
+ . UniqueResult ( ) ;
1415
+
1416
+ Assert . AreEqual ( 2 , count ) ;
1417
+ }
1393
1418
1394
1419
// Subtest #6
1395
1420
object obj = s . CreateCriteria ( typeof ( Enrolment ) )
@@ -1524,48 +1549,53 @@ public void ProjectionsUsingProperty()
1524
1549
1525
1550
Assert . AreEqual ( 7 , array . Length ) ;
1526
1551
1527
- // Subtest #15
1528
- IList list = s . CreateCriteria ( typeof ( Enrolment ) )
1529
- . CreateAlias ( "Student" , "st" )
1530
- . CreateAlias ( "Course" , "co" )
1531
- . SetProjection ( Projections . ProjectionList ( )
1532
- . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) )
1533
- . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1534
- . Add ( Property . ForName ( "Year" ) . Group ( ) )
1535
- )
1536
- . List ( ) ;
1552
+ IList list ;
1537
1553
1538
- Assert . AreEqual ( 2 , list . Count ) ;
1554
+ if ( TestDialect . SupportsCountDistinct )
1555
+ {
1556
+ // Subtest #15
1557
+ list = s . CreateCriteria ( typeof ( Enrolment ) )
1558
+ . CreateAlias ( "Student" , "st" )
1559
+ . CreateAlias ( "Course" , "co" )
1560
+ . SetProjection ( Projections . ProjectionList ( )
1561
+ . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) )
1562
+ . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1563
+ . Add ( Property . ForName ( "Year" ) . Group ( ) )
1564
+ )
1565
+ . List ( ) ;
1539
1566
1540
- // Subtest #16
1541
- list = s . CreateCriteria < Enrolment > ( )
1542
- . CreateAlias ( "Student" , "st" )
1543
- . CreateAlias ( "Course" , "co" )
1544
- . SetProjection ( Projections . ProjectionList ( )
1545
- . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) . As ( "courseCode" ) )
1546
- . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) . As ( "studentNumber" ) )
1547
- . Add ( Property . ForName ( "Year" ) . Group ( ) )
1548
- )
1549
- . AddOrder ( Order . Asc ( "courseCode" ) )
1550
- . AddOrder ( Order . Asc ( "studentNumber" ) )
1551
- . List ( ) ;
1567
+ Assert . AreEqual ( 2 , list . Count ) ;
1568
+
1569
+ // Subtest #16
1570
+ list = s . CreateCriteria < Enrolment > ( )
1571
+ . CreateAlias ( "Student" , "st" )
1572
+ . CreateAlias ( "Course" , "co" )
1573
+ . SetProjection ( Projections . ProjectionList ( )
1574
+ . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) . As ( "courseCode" ) )
1575
+ . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) . As ( "studentNumber" ) )
1576
+ . Add ( Property . ForName ( "Year" ) . Group ( ) )
1577
+ )
1578
+ . AddOrder ( Order . Asc ( "courseCode" ) )
1579
+ . AddOrder ( Order . Asc ( "studentNumber" ) )
1580
+ . List ( ) ;
1552
1581
1553
- Assert . That ( list . Count , Is . EqualTo ( 2 ) ) ;
1582
+ Assert . That ( list . Count , Is . EqualTo ( 2 ) ) ;
1554
1583
1555
- // Subtest #17
1556
- list = s . CreateCriteria < Enrolment > ( )
1557
- . CreateAlias ( "Student" , "st" )
1558
- . CreateAlias ( "Course" , "co" )
1559
- . SetProjection ( Projections . ProjectionList ( )
1560
- . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) . As ( "cCode" ) )
1561
- . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) . As ( "stNumber" ) )
1562
- . Add ( Property . ForName ( "Year" ) . Group ( ) )
1563
- )
1564
- . AddOrder ( Order . Asc ( "cCode" ) )
1565
- . AddOrder ( Order . Asc ( "stNumber" ) )
1566
- . List ( ) ;
1584
+ // Subtest #17
1585
+ list = s . CreateCriteria < Enrolment > ( )
1586
+ . CreateAlias ( "Student" , "st" )
1587
+ . CreateAlias ( "Course" , "co" )
1588
+ . SetProjection ( Projections . ProjectionList ( )
1589
+ . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) . As ( "cCode" ) )
1590
+ . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) . As ( "stNumber" ) )
1591
+ . Add ( Property . ForName ( "Year" ) . Group ( ) )
1592
+ )
1593
+ . AddOrder ( Order . Asc ( "cCode" ) )
1594
+ . AddOrder ( Order . Asc ( "stNumber" ) )
1595
+ . List ( ) ;
1567
1596
1568
- Assert . That ( list . Count , Is . EqualTo ( 2 ) ) ;
1597
+ Assert . That ( list . Count , Is . EqualTo ( 2 ) ) ;
1598
+ }
1569
1599
1570
1600
s . Delete ( gavin ) ;
1571
1601
s . Delete ( xam ) ;
@@ -1642,13 +1672,16 @@ public void DistinctProjectionsOfComponents()
1642
1672
. UniqueResult ( ) ;
1643
1673
1644
1674
Assert . That ( result , Is . EqualTo ( 2 ) ) ;
1645
-
1646
- result = s . CreateCriteria < Student > ( )
1647
- . SetProjection ( Projections . CountDistinct ( "CityState.City" ) )
1648
- . UniqueResult ( ) ;
1649
-
1650
- Assert . That ( result , Is . EqualTo ( 1 ) ) ;
1651
-
1675
+
1676
+ if ( TestDialect . SupportsCountDistinct )
1677
+ {
1678
+ result = s . CreateCriteria < Student > ( )
1679
+ . SetProjection ( Projections . CountDistinct ( "CityState.City" ) )
1680
+ . UniqueResult ( ) ;
1681
+
1682
+ Assert . That ( result , Is . EqualTo ( 1 ) ) ;
1683
+ }
1684
+
1652
1685
t . Commit ( ) ;
1653
1686
s . Close ( ) ;
1654
1687
@@ -1886,11 +1919,13 @@ public void CloningProjectionsUsingProperty()
1886
1919
s . Save ( enrolment ) ;
1887
1920
s . Flush ( ) ;
1888
1921
1889
- int count = ( int ) CriteriaTransformer . Clone ( s . CreateCriteria ( typeof ( Enrolment ) )
1890
- . SetProjection ( Property . ForName ( "StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1891
- )
1892
- . UniqueResult ( ) ;
1893
- Assert . AreEqual ( 2 , count ) ;
1922
+ if ( TestDialect . SupportsCountDistinct )
1923
+ {
1924
+ int count = ( int ) CriteriaTransformer . Clone (
1925
+ s . CreateCriteria ( typeof ( Enrolment ) ) . SetProjection ( Property . ForName ( "StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1926
+ ) . UniqueResult ( ) ;
1927
+ Assert . AreEqual ( 2 , count ) ;
1928
+ }
1894
1929
1895
1930
object obj = CriteriaTransformer . Clone ( s . CreateCriteria ( typeof ( Enrolment ) )
1896
1931
. SetProjection ( Projections . ProjectionList ( )
@@ -2009,18 +2044,22 @@ public void CloningProjectionsUsingProperty()
2009
2044
. UniqueResult ( ) ;
2010
2045
Assert . AreEqual ( 7 , array . Length ) ;
2011
2046
2012
- IList list = CriteriaTransformer . Clone ( s . CreateCriteria ( typeof ( Enrolment ) )
2013
- . CreateAlias ( "Student" , "st" )
2014
- . CreateAlias ( "Course" , "co" )
2015
- . SetProjection ( Projections . ProjectionList ( )
2016
- . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) )
2017
- . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) )
2018
- . Add ( Property . ForName ( "Year" ) . Group ( ) )
2019
- )
2020
- )
2021
- . List ( ) ;
2047
+ if ( TestDialect . SupportsCountDistinct )
2048
+ {
2049
+ IList list = CriteriaTransformer . Clone (
2050
+ s . CreateCriteria ( typeof ( Enrolment ) )
2051
+ . CreateAlias ( "Student" , "st" )
2052
+ . CreateAlias ( "Course" , "co" )
2053
+ . SetProjection (
2054
+ Projections . ProjectionList ( )
2055
+ . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) )
2056
+ . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) )
2057
+ . Add ( Property . ForName ( "Year" ) . Group ( ) )
2058
+ )
2059
+ ) . List ( ) ;
2022
2060
2023
- Assert . AreEqual ( 2 , list . Count ) ;
2061
+ Assert . AreEqual ( 2 , list . Count ) ;
2062
+ }
2024
2063
2025
2064
s . Delete ( gavin ) ;
2026
2065
s . Delete ( xam ) ;
0 commit comments