MentaBean

Rev

Rev 169 | Rev 204 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 169 Rev 182
Line 8... Line 8...
8
8
9
import java.sql.PreparedStatement;
9
import java.sql.PreparedStatement;
10
import java.sql.ResultSet;
10
import java.sql.ResultSet;
11
import java.util.ArrayList;
11
import java.util.ArrayList;
12
import java.util.List;
12
import java.util.List;
-
 
13
-
 
14
import junit.framework.Assert;
13
15
14
import org.junit.After;
16
import org.junit.After;
15
import org.junit.Before;
17
import org.junit.Before;
16
import org.junit.Test;
18
import org.junit.Test;
17
import org.mentabean.BeanConfig;
19
import org.mentabean.BeanConfig;
Line 28... Line 30...
28
import org.mentabean.sql.conditions.In;
30
import org.mentabean.sql.conditions.In;
29
import org.mentabean.sql.conditions.LessThan;
31
import org.mentabean.sql.conditions.LessThan;
30
import org.mentabean.sql.conditions.Like;
32
import org.mentabean.sql.conditions.Like;
31
import org.mentabean.sql.conditions.NotEquals;
33
import org.mentabean.sql.conditions.NotEquals;
32
import org.mentabean.sql.conditions.NotIn;
34
import org.mentabean.sql.conditions.NotIn;
-
 
35
import org.mentabean.sql.functions.Avg;
33
import org.mentabean.sql.functions.Count;
36
import org.mentabean.sql.functions.Count;
34
import org.mentabean.sql.functions.Length;
37
import org.mentabean.sql.functions.Length;
35
import org.mentabean.sql.functions.Lower;
38
import org.mentabean.sql.functions.Lower;
36
import org.mentabean.sql.functions.Substring;
39
import org.mentabean.sql.functions.Substring;
37
import org.mentabean.sql.functions.Upper;
40
import org.mentabean.sql.functions.Upper;
38
import org.mentabean.sql.operations.Add;
41
import org.mentabean.sql.operations.Add;
-
 
42
import org.mentabean.sql.param.DefaultParamHandler;
-
 
43
import org.mentabean.sql.param.Param;
39
import org.mentabean.sql.param.ParamField;
44
import org.mentabean.sql.param.ParamField;
40
import org.mentabean.sql.param.ParamFunction;
45
import org.mentabean.sql.param.ParamFunction;
-
 
46
import org.mentabean.sql.param.ParamHandler;
41
import org.mentabean.sql.param.ParamSubQuery;
47
import org.mentabean.sql.param.ParamSubQuery;
42
import org.mentabean.sql.param.ParamValue;
48
import org.mentabean.sql.param.ParamValue;
43
import org.mentabean.util.PropertiesProxy;
49
import org.mentabean.util.PropertiesProxy;
44
import org.mentabean.util.SQLUtils;
50
import org.mentabean.util.SQLUtils;
45
51
Line 349... Line 355...
349
                                .endIndex(new ParamFunction(new Length(
355
                                .endIndex(new ParamFunction(new Length(
350
                                                new ParamFunction(new Lower(
356
                                                new ParamFunction(new Lower(
351
                                                                new ParamField(e, e.pxy().getName())))))))
357
                                                                new ParamField(e, e.pxy().getName())))))))
352
                                .condition(new Like(new ParamValue("%o"))).and()
358
                                .condition(new Like(new ParamValue("%o"))).and()
353
                               
359
                               
354
                        .clause(e, e.pxy().getNumber()).condition(
-
 
-
 
360
                        .clause(e.pxy().getNumber()).condition(
355
                                        new In(new ParamSubQuery(builder.subQuery()
361
                                        new In(new ParamSubQuery(builder.subQuery()
356
                                                        .select(e2)
362
                                                        .select(e2)
357
                                                        .from(e2)
363
                                                        .from(e2)
358
                                                        .where()
364
                                                        .where()
359
                                                        .clause(new Substring(new ParamValue("teste")).endIndex(
365
                                                        .clause(new Substring(new ParamValue("teste")).endIndex(
Line 534... Line 540...
534
540
535
                Query query = builder
541
                Query query = builder
536
                                .select(e)
542
                                .select(e)
537
                                .from(e)
543
                                .from(e)
538
                                .where()
544
                                .where()
539
                                .clause(e, e.pxy().getSalary())
-
 
-
 
545
                                .clause(e.pxy().getSalary())
540
                                .condition(new GreaterThan(15000))
546
                                .condition(new GreaterThan(15000))
541
                                .orderBy().asc(e, e.pxy().getName());
547
                                .orderBy().asc(e, e.pxy().getName());
542
548
543
                List<Employee> list = query.executeQuery();
549
                List<Employee> list = query.executeQuery();
544
550
Line 562... Line 568...
562
                                .select(e)
568
                                .select(e)
563
                                .from(e)
569
                                .from(e)
564
                                .join(p).pkOf(e).in(p)
570
                                .join(p).pkOf(e).in(p)
565
                                .join(c).pkOf(c).in(p)
571
                                .join(c).pkOf(c).in(p)
566
                                .where()
572
                                .where()
567
                                .clause(c, c.pxy().getName())
-
 
-
 
573
                                .clause(c.pxy().getName())
568
                                .condition(new Equals("Google"))
574
                                .condition(new Equals("Google"))
569
                                .and()
575
                                .and()
570
                                .clause(e, e.pxy().getName())
-
 
-
 
576
                                .clause(e.pxy().getName())
571
                                .condition(new Like("M%"))
577
                                .condition(new Like("M%"))
572
                                .orderBy().asc(e, e.pxy().getName());
578
                                .orderBy().asc(e, e.pxy().getName());
573
579
574
                List<Employee> list = query.executeQuery();
580
                List<Employee> list = query.executeQuery();
575
581
Line 593... Line 599...
593
                                .select(e)
599
                                .select(e)
594
                                .from(e)
600
                                .from(e)
595
                                .join(p).pkOf(e).in(p)
601
                                .join(p).pkOf(e).in(p)
596
                                .join(c).pkOf(c).in(p)
602
                                .join(c).pkOf(c).in(p)
597
                                .where()
603
                                .where()
598
                                .clause(c, c.pxy().getId())
-
 
-
 
604
                                .clause(c.pxy().getId())
599
                                .condition(new Equals("1"))
605
                                .condition(new Equals("1"))
600
                                .and()
606
                                .and()
601
                                .clause(e, e.pxy().getSalary())
-
 
-
 
607
                                .clause(e.pxy().getSalary())
602
                                .condition(new Between(10000, 15000))
608
                                .condition(new Between(10000, 15000))
603
                                .orderBy().asc(e, e.pxy().getSalary());
609
                                .orderBy().asc(e, e.pxy().getSalary());
604
610
605
                List<Employee> list = query.executeQuery();
611
                List<Employee> list = query.executeQuery();
606
612
Line 661... Line 667...
661
                Query query = builder
667
                Query query = builder
662
                                .select(e)
668
                                .select(e)
663
                                .from(e)
669
                                .from(e)
664
                                .where()
670
                                .where()
665
                               
671
                               
666
                                .clause(e, e.pxy().getNumber())
-
 
-
 
672
                                .clause(e.pxy().getNumber())
667
                               
673
                               
668
                                //sub query in 'NOT IN' condition
674
                                //sub query in 'NOT IN' condition
669
                                .condition(new NotIn(new ParamSubQuery(
675
                                .condition(new NotIn(new ParamSubQuery(
670
                                                builder.subQuery()
676
                                                builder.subQuery()
671
                                                .select(eSub)
677
                                                .select(eSub)
Line 692... Line 698...
692
                Query query = builder
698
                Query query = builder
693
                                .select(e)
699
                                .select(e)
694
                                .from(e)
700
                                .from(e)
695
                                .leftJoin(p).pkOf(e).in(p)
701
                                .leftJoin(p).pkOf(e).in(p)
696
                                .where()
702
                                .where()
697
                                .clause(p, p.pxy().getDescription())
-
 
-
 
703
                                .clause(p.pxy().getDescription())
698
                               
704
                               
699
                                //this will be converted to 'IS NULL' in query. See the Equals condition
705
                                //this will be converted to 'IS NULL' in query. See the Equals condition
700
                                .condition(new Equals(null));
706
                                .condition(new Equals(null));
701
               
707
               
702
                List<Employee> list = query.executeQuery();
708
                List<Employee> list = query.executeQuery();
Line 818... Line 824...
818
               
824
               
819
                Query sub = builder.subQuery()
825
                Query sub = builder.subQuery()
820
                                .select(new Sentence(new Count(new ParamField(p2, p2.pxy().getDescription()))).name("count_sub"))
826
                                .select(new Sentence(new Count(new ParamField(p2, p2.pxy().getDescription()))).name("count_sub"))
821
                                .from(p2)
827
                                .from(p2)
822
                                .where()
828
                                .where()
823
                                .clause(p2, p2.pxy().getCompany().getId())
-
 
-
 
829
                                .clause(p2.pxy().getCompany().getId())
824
                                .condition(new Equals(new ParamField(c, c.pxy().getId())));
830
                                .condition(new Equals(new ParamField(c, c.pxy().getId())));
825
               
831
               
826
                Query query = builder
832
                Query query = builder
827
                                .select(p, c)
833
                                .select(p, c)
828
                                        .add(new Sentence(sub)
834
                                        .add(new Sentence(sub)
Line 1145... Line 1151...
1145
                                        .inProperty(p.pxy().getCompany())
1151
                                        .inProperty(p.pxy().getCompany())
1146
                                .leftJoin(e).pkOf(e).in(p)
1152
                                .leftJoin(e).pkOf(e).in(p)
1147
                                        .inProperty(p.pxy().getEmployee())
1153
                                        .inProperty(p.pxy().getEmployee())
1148
                                .where()
1154
                                .where()
1149
                                .openPar()
1155
                                .openPar()
1150
                                        .clause(c, c.pxy().getName())
-
 
-
 
1156
                                        .clause(c.pxy().getName())
1151
                                        .condition(new Like("%O%"))
1157
                                        .condition(new Like("%O%"))
1152
                                        .or()
1158
                                        .or()
1153
                                        .clause(e, e.pxy().getName())
-
 
-
 
1159
                                        .clause(e.pxy().getName())
1154
                                        .condition(new Like("%O%"))
1160
                                        .condition(new Like("%O%"))
1155
                                .closePar()
1161
                                .closePar()
1156
                                .and()
1162
                                .and()
1157
                                .clause(e, e.pxy().getSalary())
-
 
-
 
1163
                                .clause(e.pxy().getSalary())
1158
                                .condition(new LessThan(50000))
1164
                                .condition(new LessThan(50000))
1159
                                .orderBy()
1165
                                .orderBy()
1160
                                .asc(p, p.pxy().getDescription());
1166
                                .asc(p, p.pxy().getDescription());
1161
               
1167
               
1162
                List<Post> list = query.executeQuery();
1168
                List<Post> list = query.executeQuery();
Line 1176... Line 1182...
1176
                QueryBuilder builder = session.buildQuery();
1182
                QueryBuilder builder = session.buildQuery();
1177
                Alias<Company> c = builder.aliasTo(Company.class, "c");
1183
                Alias<Company> c = builder.aliasTo(Company.class, "c");
1178
                Alias<Employee> e = builder.aliasTo(Employee.class, "e");
1184
                Alias<Employee> e = builder.aliasTo(Employee.class, "e");
1179
                Alias<Post> p = builder.aliasTo(Post.class, "p");
1185
                Alias<Post> p = builder.aliasTo(Post.class, "p");
1180
               
1186
               
1181
                assertEquals(6, session.buildQuery()
-
 
-
 
1187
                assertEquals(6, builder
1182
                                .select(p, e, c)
1188
                                .select(p, e, c)
1183
                                .from(p)
1189
                                .from(p)
1184
                                .leftJoin(c).pkOf(c).in(p)
-
 
1185
                                        .inProperty(p.pxy().getCompany())
-
 
1186
                                .leftJoin(e).pkOf(e).in(p)
-
 
1187
                                        .inProperty(p.pxy().getEmployee())
-
 
-
 
1190
                                .leftJoin(c).on(c.pxy().getId()).eq(p.pxy().getCompany().getId())
-
 
1191
                                        .eqProperty(p.pxy().getCompany())
-
 
1192
                                .leftJoin(e).on(e.pxy().getNumber()).eq(p.pxy().getEmployee().getNumber())
-
 
1193
                                        .eqProperty(p.pxy().getEmployee())
1188
                                .where()
1194
                                .where()
1189
                                .openPar()
1195
                                .openPar()
1190
                                .clauseIf(false, c, c.pxy().getName())
-
 
-
 
1196
                                .clauseIf(false, c.pxy().getName())
1191
                                .condition(new Like("Google"))
1197
                                .condition(new Like("Google"))
1192
                                .or()
1198
                                .or()
1193
                                .clauseIf(false, c, c.pxy().getName())
-
 
-
 
1199
                                .clauseIf(false, c.pxy().getName())
1194
                                .condition(new Like("Oracle"))
1200
                                .condition(new Like("Oracle"))
1195
                                .closePar()
1201
                                .closePar()
1196
                                .executeQuery().size());
1202
                                .executeQuery().size());
1197
               
1203
               
1198
                assertEquals(4, session.buildQuery()
-
 
-
 
1204
                assertEquals(4, builder
1199
                                .select(p, e, c)
1205
                                .select(p, e, c)
1200
                                .from(p)
1206
                                .from(p)
1201
                                .leftJoin(c).pkOf(c).in(p)
1207
                                .leftJoin(c).pkOf(c).in(p)
1202
                                        .inProperty(p.pxy().getCompany())
1208
                                        .inProperty(p.pxy().getCompany())
1203
                                .leftJoin(e).pkOf(e).in(p)
1209
                                .leftJoin(e).pkOf(e).in(p)
1204
                                        .inProperty(p.pxy().getEmployee())
1210
                                        .inProperty(p.pxy().getEmployee())
1205
                                .where()
1211
                                .where()
1206
                                .openPar()
1212
                                .openPar()
1207
                                .clauseIf(true, c, c.pxy().getName())
-
 
-
 
1213
                                .clauseIf(true, c.pxy().getName())
1208
                                .condition(new Like("Google"))
1214
                                .condition(new Like("Google"))
1209
                                .or()
1215
                                .or()
1210
                                .clauseIf(false, c, c.pxy().getName())
-
 
-
 
1216
                                .clauseIf(false, c.pxy().getName())
1211
                                .condition(new Like("Oracle"))
1217
                                .condition(new Like("Oracle"))
1212
                                .closePar()
1218
                                .closePar()
1213
                                .executeQuery().size());
1219
                                .executeQuery().size());
1214
               
1220
               
1215
                assertEquals(2, session.buildQuery()
-
 
-
 
1221
                assertEquals(2, builder
1216
                                .select(p, e, c)
1222
                                .select(p, e, c)
1217
                                .from(p)
1223
                                .from(p)
1218
                                .leftJoin(c).pkOf(c).in(p)
1224
                                .leftJoin(c).pkOf(c).in(p)
1219
                                        .inProperty(p.pxy().getCompany())
1225
                                        .inProperty(p.pxy().getCompany())
1220
                                .leftJoin(e).pkOf(e).in(p)
1226
                                .leftJoin(e).pkOf(e).in(p)
1221
                                        .inProperty(p.pxy().getEmployee())
1227
                                        .inProperty(p.pxy().getEmployee())
1222
                                .where()
1228
                                .where()
1223
                                .openPar()
1229
                                .openPar()
1224
                                .clauseIf(false, c, c.pxy().getName())
-
 
-
 
1230
                                .clauseIf(false, c.pxy().getName())
1225
                                .condition(new Like("Google"))
1231
                                .condition(new Like("Google"))
1226
                                .or()
1232
                                .or()
1227
                                .clauseIf(true, c, c.pxy().getName())
-
 
-
 
1233
                                .clauseIf(true, c.pxy().getName())
1228
                                .condition(new Like("Oracle"))
1234
                                .condition(new Like("Oracle"))
1229
                                .closePar()
1235
                                .closePar()
1230
                                .executeQuery().size());
1236
                                .executeQuery().size());
1231
               
1237
               
1232
                assertEquals(0, session.buildQuery()
-
 
-
 
1238
                assertEquals(0, builder
1233
                                .select(p, e, c)
1239
                                .select(p, e, c)
1234
                                .from(p)
1240
                                .from(p)
1235
                                .leftJoin(c).pkOf(c).in(p)
1241
                                .leftJoin(c).pkOf(c).in(p)
1236
                                        .inProperty(p.pxy().getCompany())
1242
                                        .inProperty(p.pxy().getCompany())
1237
                                .leftJoin(e).pkOf(e).in(p)
1243
                                .leftJoin(e).pkOf(e).in(p)
1238
                                        .inProperty(p.pxy().getEmployee())
1244
                                        .inProperty(p.pxy().getEmployee())
1239
                                .where()
1245
                                .where()
1240
                                .openPar()
1246
                                .openPar()
1241
                                .clauseIf(true, c, c.pxy().getName())
-
 
-
 
1247
                                .clauseIf(true, c.pxy().getName())
1242
                                .condition(new Like("Google"))
1248
                                .condition(new Like("Google"))
1243
                                .and()
1249
                                .and()
1244
                                .clauseIf(true, c, c.pxy().getName())
-
 
-
 
1250
                                .clauseIf(true, c.pxy().getName())
1245
                                .condition(new Like("Oracle"))
1251
                                .condition(new Like("Oracle"))
1246
                                .closePar()
1252
                                .closePar()
1247
                                .executeQuery().size());
1253
                                .executeQuery().size());
1248
               
1254
               
1249
                assertEquals(6, session.buildQuery()
-
 
1250
                                .select(p, e, c)
-
 
-
 
1255
                assertEquals(6, builder
-
 
1256
                                .selectDistinct(p, e, c)
1251
                                .from(p)
1257
                                .from(p)
1252
                                .leftJoin(c).pkOf(c).in(p)
1258
                                .leftJoin(c).pkOf(c).in(p)
1253
                                        .inProperty(p.pxy().getCompany())
1259
                                        .inProperty(p.pxy().getCompany())
1254
                                .leftJoin(e).pkOf(e).in(p)
1260
                                .leftJoin(e).pkOf(e).in(p)
1255
                                        .inProperty(p.pxy().getEmployee())
1261
                                        .inProperty(p.pxy().getEmployee())
1256
                                .where()
1262
                                .where()
1257
                                .openPar()
1263
                                .openPar()
1258
                                .clauseIf(false, c, c.pxy().getName())
-
 
-
 
1264
                                .clauseIf(false, c.pxy().getName())
1259
                                .condition(new Like("Google"))
1265
                                .condition(new Like("Google"))
1260
                                .or()
1266
                                .or()
1261
                                .clauseIf(false, c, c.pxy().getName())
-
 
-
 
1267
                                .clauseIf(false, c.pxy().getName())
1262
                                .condition(new Like("Oracle"))
1268
                                .condition(new Like("Oracle"))
1263
                                .closePar()
1269
                                .closePar()
1264
                                .and()
1270
                                .and()
1265
                                .clauseIf(false, e, e.pxy().getName())
-
 
-
 
1271
                                .clauseIf(false, e.pxy().getName())
1266
                                .condition(new Like("%"))
1272
                                .condition(new Like("%"))
1267
                                .executeQuery().size());
1273
                                .executeQuery().size());
1268
               
1274
               
1269
                assertEquals(6, session.buildQuery()
-
 
1270
                                .select(p, e, c)
-
 
-
 
1275
                assertEquals(6, builder
-
 
1276
                                .selectDistinct(p, e, c)
1271
                                .from(p)
1277
                                .from(p)
1272
                                .leftJoin(c).pkOf(c).in(p)
1278
                                .leftJoin(c).pkOf(c).in(p)
1273
                                .inProperty(p.pxy().getCompany())
1279
                                .inProperty(p.pxy().getCompany())
1274
                                .leftJoin(e).pkOf(e).in(p)
1280
                                .leftJoin(e).pkOf(e).in(p)
1275
                                .inProperty(p.pxy().getEmployee())
1281
                                .inProperty(p.pxy().getEmployee())
1276
                                .where()
1282
                                .where()
1277
                                .openPar()
1283
                                .openPar()
1278
                                .clauseIf(true, c, c.pxy().getName())
-
 
-
 
1284
                                .clauseIf(true, c.pxy().getName())
1279
                                .condition(new Like("Google"))
1285
                                .condition(new Like("Google"))
1280
                                .or()
1286
                                .or()
1281
                                .clauseIf(true, c, c.pxy().getName())
-
 
-
 
1287
                                .clauseIf(true, c.pxy().getName())
1282
                                .condition(new Like("Oracle"))
1288
                                .condition(new Like("Oracle"))
1283
                                .closePar()
1289
                                .closePar()
1284
                                .and()
1290
                                .and()
1285
                                .clauseIf(true, e, e.pxy().getName())
-
 
-
 
1291
                                .clauseIf(true, e.pxy().getName())
1286
                                .condition(new Like("%"))
1292
                                .condition(new Like("%"))
1287
                                .executeQuery().size());
1293
                                .executeQuery().size());
1288
               
1294
               
1289
                assertEquals(4, session.buildQuery()
-
 
-
 
1295
                assertEquals(4, builder
1290
                                .select(p, e, c)
1296
                                .select(p, e, c)
1291
                                .from(p)
1297
                                .from(p)
1292
                                .leftJoin(c).pkOf(c).in(p)
1298
                                .leftJoin(c).pkOf(c).in(p)
1293
                                .inProperty(p.pxy().getCompany())
1299
                                .inProperty(p.pxy().getCompany())
1294
                                .leftJoin(e).pkOf(e).in(p)
1300
                                .leftJoin(e).pkOf(e).in(p)
1295
                                .inProperty(p.pxy().getEmployee())
1301
                                .inProperty(p.pxy().getEmployee())
1296
                                .where()
1302
                                .where()
1297
                                .openPar()
1303
                                .openPar()
1298
                                        .openPar()
1304
                                        .openPar()
1299
                                                .clauseIf(true, c, c.pxy().getName())
-
 
-
 
1305
                                                .clauseIf(true, c.pxy().getName())
1300
                                                .condition(new Like("Google"))
1306
                                                .condition(new Like("Google"))
1301
                                        .closePar()
1307
                                        .closePar()
1302
                                        .and()
1308
                                        .and()
1303
                                        .openPar()
1309
                                        .openPar()
1304
                                                .clauseIf(false, c, c.pxy().getName())
-
 
-
 
1310
                                                .clauseIf(false, c.pxy().getName())
1305
                                                .condition(new Like("Oracle"))
1311
                                                .condition(new Like("Oracle"))
1306
                                                .or()
1312
                                                .or()
1307
                                                .openPar()
1313
                                                .openPar()
1308
                                                        .clauseIf(true, c, c.pxy().getId())
-
 
-
 
1314
                                                        .clauseIf(true, c.pxy().getId())
1309
                                                        .condition(new NotEquals(null))
1315
                                                        .condition(new NotEquals(null))
1310
                                                .closePar()
1316
                                                .closePar()
1311
                                        .closePar()
1317
                                        .closePar()
1312
                                .closePar()
1318
                                .closePar()
1313
                                .and()
1319
                                .and()
1314
                                .clauseIf(false, e, e.pxy().getName())
-
 
-
 
1320
                                .clauseIf(false, e.pxy().getName())
1315
                                .condition(new Like("%"))
1321
                                .condition(new Like("%"))
1316
                                .limit(6)
1322
                                .limit(6)
1317
                                .executeQuery().size());
1323
                                .executeQuery().size());
1318
               
1324
               
-
 
1325
        }
-
 
1326
       
-
 
1327
        @Test
-
 
1328
        public void limitNumberTest() {
-
 
1329
-
 
1330
                QueryBuilder builder = session.buildQuery();
-
 
1331
                Alias<Company> c = builder.aliasTo(Company.class, "c");
-
 
1332
                Alias<Employee> e = builder.aliasTo(Employee.class, "e");
-
 
1333
                Alias<Post> p = builder.aliasTo(Post.class, "p");
-
 
1334
-
 
1335
                assertEquals(6, builder
-
 
1336
                                .selectDistinct(p, e, c)
-
 
1337
                                .from(p)
-
 
1338
                                .leftJoin(c).pkOf(c).in(p)
-
 
1339
                                        .inProperty(p.pxy().getCompany())
-
 
1340
                                .leftJoin(e).pkOf(e).in(p)
-
 
1341
                                        .inProperty(p.pxy().getEmployee())
-
 
1342
                                .where()
-
 
1343
                                .openPar()
-
 
1344
                                .clauseIf(false, c.pxy().getName())
-
 
1345
                                .condition(new Like("Google"))
-
 
1346
                                .or()
-
 
1347
                                .clauseIf(false, c.pxy().getName())
-
 
1348
                                .condition(new Like("Oracle"))
-
 
1349
                                .closePar()
-
 
1350
                                .limit(0)
-
 
1351
                                .executeQuery().size());
-
 
1352
               
-
 
1353
                assertEquals(3, builder
-
 
1354
                                .select(p, e, c)
-
 
1355
                                .from(p)
-
 
1356
                                .leftJoin(c).pkOf(c).in(p)
-
 
1357
                                .inProperty(p.pxy().getCompany())
-
 
1358
                                .leftJoin(e).pkOf(e).in(p)
-
 
1359
                                .inProperty(p.pxy().getEmployee())
-
 
1360
                                .where()
-
 
1361
                                .openPar()
-
 
1362
                                .clauseIf(false, c.pxy().getName())
-
 
1363
                                .condition(new Like("Google"))
-
 
1364
                                .or()
-
 
1365
                                .clauseIf(false, c.pxy().getName())
-
 
1366
                                .condition(new Like("Oracle"))
-
 
1367
                                .closePar()
-
 
1368
                                .limit(3)
-
 
1369
                                .executeQuery().size());
-
 
1370
        }
-
 
1371
       
-
 
1372
        @Test
-
 
1373
        public void paramHandlerTest() {
-
 
1374
               
-
 
1375
                QueryBuilder builder = session.buildQuery();
-
 
1376
                Alias<Company> c = builder.aliasTo(Company.class, "c");
-
 
1377
                Alias<Post> p = builder.aliasTo(Post.class, "p");
-
 
1378
               
-
 
1379
                ParamHandler paramHandler = new DefaultParamHandler();
-
 
1380
                Param found;
-
 
1381
               
-
 
1382
                found = paramHandler.findBetter(builder, 3);
-
 
1383
                Assert.assertTrue(found instanceof ParamValue);
-
 
1384
               
-
 
1385
                found = paramHandler.findBetter(builder, null);
-
 
1386
                Assert.assertTrue(found instanceof ParamValue);
-
 
1387
               
-
 
1388
                found = paramHandler.findBetter(builder, builder.subQuery().selectFrom(c));
-
 
1389
                Assert.assertTrue(found instanceof ParamSubQuery);
-
 
1390
               
-
 
1391
                builder.selectFrom(c).where().clause(c.pxy().getName()).condition(new NotEquals(null)).executeQuery();
-
 
1392
               
-
 
1393
                found = paramHandler.findBetter(builder, c.pxy().getName());
-
 
1394
                Assert.assertTrue(found instanceof ParamField);
-
 
1395
               
-
 
1396
                builder = builder.subQuery();
-
 
1397
               
-
 
1398
                builder.select(c, p)
-
 
1399
                        .from(c)
-
 
1400
                        .join(p).pkOf(c).in(p)
-
 
1401
                        .where().clause(p.pxy().getDescription())
-
 
1402
                        .condition(new NotEquals("aaaaaaaa"))
-
 
1403
                        .and()
-
 
1404
                        .clause(c.pxy().getName())
-
 
1405
                        .condition(new NotEquals("aaaaaaaaa"))
-
 
1406
                        .executeQuery();
-
 
1407
               
-
 
1408
                found = paramHandler.findBetter(builder, p.pxy().getDescription());
-
 
1409
                Assert.assertTrue(found instanceof ParamField);
-
 
1410
               
-
 
1411
                found = paramHandler.findBetter(builder, c.pxy().getId());
-
 
1412
                Assert.assertTrue(found instanceof ParamField);
-
 
1413
               
-
 
1414
                found = paramHandler.findBetter(builder, new Avg(null));
-
 
1415
                Assert.assertTrue(found instanceof ParamFunction);     
1319
        }
1416
        }
1320
       
1417
       
1321
}
1418
}