View | Details | Raw Unified | Return to bug 293708
Collapse All | Expand All

(-)jpa/eclipselink.jpa.modelgen.test/src/org/eclipse/persistence/testing/tests/jpa/criteria/metamodel/JUnitCriteriaSimpleTestSuite.java (-277 / +611 lines)
Lines 227-238 Link Here
227
    public void simpleJoinFetchTest(org.eclipse.persistence.jpa.JpaEntityManager em) throws Exception {
227
    public void simpleJoinFetchTest(org.eclipse.persistence.jpa.JpaEntityManager em) throws Exception {
228
        //"SELECT e FROM Employee e LEFT JOIN FETCH e.phoneNumbers"
228
        //"SELECT e FROM Employee e LEFT JOIN FETCH e.phoneNumbers"
229
229
230
        em.createQuery("select e from Employee e left join fetch e.phoneNumbers").getResultList();
230
        //use the cache
231
        //use the cache
231
        CriteriaBuilder qb = em.getCriteriaBuilder();
232
        CriteriaBuilder qb = em.getCriteriaBuilder();
232
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
233
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
233
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
234
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
234
        Root<Employee> root2 = cq.from(Employee.class);
235
        //getEntityManagerFactory().getMetamodel();
236
        root.fetch(Employee_.phoneNumbers, JoinType.LEFT);
235
        root.fetch(Employee_.phoneNumbers, JoinType.LEFT);
237
        List result = em.createQuery(cq).getResultList();
236
        List result = em.createQuery(cq).getResultList();
238
        
237
        
Lines 304-312 Link Here
304
        clearCache();
303
        clearCache();
305
304
306
        //"SELECT OBJECT(emp) FROM Employee emp"
305
        //"SELECT OBJECT(emp) FROM Employee emp"
307
        List result = em.createQuery(em.getCriteriaBuilder().createQuery(Employee.class)).getResultList();
306
        beginTransaction(em);
308
307
        try {
309
        Assert.assertTrue("Base Test Case Failed", comparer.compareObjects(result, expectedResult));
308
            List result = em.createQuery(em.getCriteriaBuilder().createQuery(Employee.class)).getResultList();
309
            Assert.assertTrue("Base Test Case Failed", comparer.compareObjects(result, expectedResult));
310
        } finally {
311
            rollbackTransaction(em);
312
            closeEntityManager(em);
313
        }
310
    }
314
    }
311
315
312
    //Test case for ABS function in EJBQL
316
    //Test case for ABS function in EJBQL
Lines 325-333 Link Here
325
        getEntityManagerFactory().getMetamodel().managedType(Employee.class).getDeclaredSingularAttribute("manager", Employee.class).getType();
329
        getEntityManagerFactory().getMetamodel().managedType(Employee.class).getDeclaredSingularAttribute("manager", Employee.class).getType();
326
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
330
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
327
        cq.where(qb.equal( qb.abs(root.get(Employee_.salary)), expectedResult.getSalary()) );
331
        cq.where(qb.equal( qb.abs(root.get(Employee_.salary)), expectedResult.getSalary()) );
328
        List result = em.createQuery(cq).getResultList();
332
329
        
333
        beginTransaction(em);
330
        Assert.assertTrue("ABS test failed", comparer.compareObjects(result, expectedResult));
334
        try {
335
            List result = em.createQuery(cq).getResultList();
336
            Assert.assertTrue("ABS test failed", comparer.compareObjects(result, expectedResult));
337
        } finally {
338
            rollbackTransaction(em);
339
            closeEntityManager(em);
340
        }
331
    }
341
    }
332
342
333
    //Test case for Between function in EJBQL
343
    //Test case for Between function in EJBQL
Lines 355-363 Link Here
355
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
365
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
356
        //Cast to Expression<Comparable> since empId is BigDec and getId is Integer.  between requires Comparable types; Number is not comparable
366
        //Cast to Expression<Comparable> since empId is BigDec and getId is Integer.  between requires Comparable types; Number is not comparable
357
        cq.where( qb.between(root.get(Employee_.id).as(Comparable.class), qb.literal(empId), qb.literal(employee.getId()) ) );
367
        cq.where( qb.between(root.get(Employee_.id).as(Comparable.class), qb.literal(empId), qb.literal(employee.getId()) ) );
358
        List result = em.createQuery(cq).getResultList();
368
        beginTransaction(em);
359
369
        try {
360
        Assert.assertTrue("Between test failed", comparer.compareObjects(result, expectedResult));
370
            List result = em.createQuery(cq).getResultList();
371
            Assert.assertTrue("Between test failed", comparer.compareObjects(result, expectedResult));
372
        } finally {
373
            rollbackTransaction(em);
374
            closeEntityManager(em);
375
        }
361
    }
376
    }
362
377
363
    //Test case for concat function in EJBQL
378
    //Test case for concat function in EJBQL
Lines 379-387 Link Here
379
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
394
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
380
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
395
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
381
        cq.where( qb.equal(root.get(Employee_.firstName), qb.concat(qb.literal(partOne), qb.literal(partTwo))) );
396
        cq.where( qb.equal(root.get(Employee_.firstName), qb.concat(qb.literal(partOne), qb.literal(partTwo))) );
382
        List result = em.createQuery(cq).getResultList();
397
        beginTransaction(em);
383
398
        try {
384
        Assert.assertTrue("Concat test failed", comparer.compareObjects(result, expectedResult));
399
            List result = em.createQuery(cq).getResultList();
400
            Assert.assertTrue("Concat test failed", comparer.compareObjects(result, expectedResult));
401
        } finally {
402
            rollbackTransaction(em);
403
            closeEntityManager(em);
404
        }
385
    }
405
    }
386
406
387
    //Test case for concat function in EJBQL taking parameters
407
    //Test case for concat function in EJBQL taking parameters
Lines 396-411 Link Here
396
        String partTwo = expectedResult.getFirstName().substring(2);
416
        String partTwo = expectedResult.getFirstName().substring(2);
397
417
398
        //"SELECT OBJECT(emp) FROM Employee emp WHERE emp.firstName = CONCAT( :partOne, :partTwo )"
418
        //"SELECT OBJECT(emp) FROM Employee emp WHERE emp.firstName = CONCAT( :partOne, :partTwo )"
399
        CriteriaBuilder qb = em.getCriteriaBuilder();
419
        beginTransaction(em);
400
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
420
        try {  
401
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
421
            CriteriaBuilder qb = em.getCriteriaBuilder();
402
        cq.where( qb.equal(root.get(Employee_.firstName), qb.concat(qb.parameter(String.class, "partOne"), qb.parameter(String.class, "partTwo"))) );
422
            CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
403
        Query query = em.createQuery(cq);
423
            Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
404
        query.setParameter("partOne", partOne).setParameter("partTwo", partTwo);
424
            cq.where( qb.equal(root.get(Employee_.firstName), qb.concat(qb.parameter(String.class, "partOne"), qb.parameter(String.class, "partTwo"))) );
405
        
425
            Query query = em.createQuery(cq);
406
        List result = query.getResultList();
426
            query.setParameter("partOne", partOne).setParameter("partTwo", partTwo);
407
427
      
408
        Assert.assertTrue("Concat test failed", comparer.compareObjects(result, expectedResult));
428
            List result = query.getResultList();
429
            Assert.assertTrue("Concat test failed", comparer.compareObjects(result, expectedResult));
430
        } finally {
431
            rollbackTransaction(em);
432
            closeEntityManager(em);
433
        }
409
    }
434
    }
410
435
411
436
Lines 434-442 Link Here
434
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
459
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
435
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
460
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
436
        cq.where( qb.like(qb.concat(root.get(Employee_.firstName), qb.literal("Smith") ), partOne+"Smith") );
461
        cq.where( qb.like(qb.concat(root.get(Employee_.firstName), qb.literal("Smith") ), partOne+"Smith") );
437
        List result = em.createQuery(cq).getResultList();
462
        beginTransaction(em);
438
463
        try {  
439
        Assert.assertTrue("Concat test with constraints failed", comparer.compareObjects(result, expectedResult));
464
            List result = em.createQuery(cq).getResultList();
465
            Assert.assertTrue("Concat test with constraints failed", comparer.compareObjects(result, expectedResult));
466
        } finally {
467
            rollbackTransaction(em);
468
            closeEntityManager(em);
469
        }
440
    }
470
    }
441
    
471
    
442
  //Test case for concat function with constants in EJBQL
472
  //Test case for concat function with constants in EJBQL
Lines 464-479 Link Here
464
                .get(getEntityManagerFactory().getMetamodel().entity(Employee.class).getSingularAttribute("id", Integer.class))));
494
                .get(getEntityManagerFactory().getMetamodel().entity(Employee.class).getSingularAttribute("id", Integer.class))));
465
        //cq.select(qb.count(root.get(PhoneNumber_.owner).get(Employee_.id)));
495
        //cq.select(qb.count(root.get(PhoneNumber_.owner).get(Employee_.id)));
466
496
467
        List result = em.createQuery(cq).getResultList();
497
        beginTransaction(em);
468
        System.out.println(" results are :"+result);
498
        try { 
499
            List result = em.createQuery(cq).getResultList();
500
            System.out.println(" results are :"+result);
469
        
501
        
470
        qb = em.getCriteriaBuilder();
502
            qb = em.getCriteriaBuilder();
471
        cq = qb.createQuery(Long.class);
503
            cq = qb.createQuery(Long.class);
472
        root = cq.from(PhoneNumber.class);
504
            root = cq.from(PhoneNumber.class);
473
        cq.select(qb.count(root.get(PhoneNumber_.owner).get(Employee_.id)));
505
            cq.select(qb.count(root.get(PhoneNumber_.owner).get(Employee_.id)));
474
        result = em.createQuery(cq).getResultList();
506
            result = em.createQuery(cq).getResultList();
475
507
476
        Assert.assertTrue("Simple Count test failed", expectedResult.elementAt(0).equals(result.get(0)));
508
            Assert.assertTrue("Simple Count test failed", expectedResult.elementAt(0).equals(result.get(0)));
509
        } finally {
510
            rollbackTransaction(em);
511
            closeEntityManager(em);
512
        }
477
    }
513
    }
478
514
479
    public void simpleThreeArgConcatTest() {
515
    public void simpleThreeArgConcatTest() {
Lines 495-504 Link Here
495
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
531
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
496
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
532
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
497
        cq.where( qb.equal( root.get(Employee_.firstName), qb.concat(qb.literal(partOne), qb.concat( qb.literal(partTwo), qb.literal(partThree)) ) ) );
533
        cq.where( qb.equal( root.get(Employee_.firstName), qb.concat(qb.literal(partOne), qb.concat( qb.literal(partTwo), qb.literal(partThree)) ) ) );
498
        List result = em.createQuery(cq).getResultList();
534
        beginTransaction(em);
499
535
        try { 
500
536
            List result = em.createQuery(cq).getResultList();
501
        Assert.assertTrue("Concat test failed", comparer.compareObjects(result, expectedResult));
537
            Assert.assertTrue("Concat test failed", comparer.compareObjects(result, expectedResult));
538
        } finally {
539
            rollbackTransaction(em);
540
            closeEntityManager(em);
541
        }
502
    }
542
    }
503
543
504
    public void simpleDistinctTest() {
544
    public void simpleDistinctTest() {
Lines 508-520 Link Here
508
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
548
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
509
        cq.distinct(true);
549
        cq.distinct(true);
510
        cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).join(Employee_.phoneNumbers);
550
        cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).join(Employee_.phoneNumbers);
511
        List result = em.createQuery(cq).getResultList();
551
        beginTransaction(em);
552
        try { 
553
            List result = em.createQuery(cq).getResultList();
512
        
554
        
513
        Set testSet = new HashSet();
555
            Set testSet = new HashSet();
514
        for (Iterator iterator = result.iterator(); iterator.hasNext(); ) {
556
            for (Iterator iterator = result.iterator(); iterator.hasNext(); ) {
515
            Employee emp = (Employee)iterator.next();
557
                Employee emp = (Employee)iterator.next();
516
            assertFalse("Result was not distinct", testSet.contains(emp));
558
                assertFalse("Result was not distinct", testSet.contains(emp));
517
            testSet.add(emp);
559
                testSet.add(emp);
560
            }
561
        } finally {
562
            rollbackTransaction(em);
563
            closeEntityManager(em);
518
        }
564
        }
519
    }
565
    }
520
566
Lines 542-550 Link Here
542
            Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
588
            Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
543
            cq.select(root.get(Employee_.firstName));
589
            cq.select(root.get(Employee_.firstName));
544
            cq.where( qb.equal(root.get(Employee_.lastName), qb.literal(emp.getLastName())));
590
            cq.where( qb.equal(root.get(Employee_.lastName), qb.literal(emp.getLastName())));
545
            List result = em.createQuery(cq).getResultList();
591
            beginTransaction(em);
592
            try {
593
                List result = em.createQuery(cq).getResultList();
546
            
594
            
547
            assertTrue("Failed to return null value", result.contains(null));
595
                assertTrue("Failed to return null value", result.contains(null));
596
            } finally {
597
                rollbackTransaction(em);
598
               // closeEntityManager(em);
599
            }
548
        } finally {
600
        } finally {
549
            try {
601
            try {
550
                beginTransaction(em);
602
                beginTransaction(em);
Lines 557-564 Link Here
557
                }
609
                }
558
                closeEntityManager(em);
610
                closeEntityManager(em);
559
                throw ex;
611
                throw ex;
612
            } finally {
613
                closeEntityManager(em);
560
            }
614
            }
561
562
        }
615
        }
563
    }
616
    }
564
617
Lines 571-587 Link Here
571
        root.join(Employee_.phoneNumbers);
624
        root.join(Employee_.phoneNumbers);
572
        cq.distinct(true);
625
        cq.distinct(true);
573
        cq.multiselect(root, root.get(Employee_.firstName));
626
        cq.multiselect(root, root.get(Employee_.firstName));
574
        List result = em.createQuery(cq).getResultList();
627
        beginTransaction(em);
628
        try {
629
            List result = em.createQuery(cq).getResultList();
575
630
576
        Set testSet = new HashSet();
631
            Set testSet = new HashSet();
577
        for (Iterator iterator = result.iterator(); iterator.hasNext(); ) {
632
            for (Iterator iterator = result.iterator(); iterator.hasNext(); ) {
578
            String ids = "";
633
                String ids = "";
579
            javax.persistence.Tuple row = (javax.persistence.Tuple)iterator.next();
634
                javax.persistence.Tuple row = (javax.persistence.Tuple)iterator.next();
580
            Employee emp = row.get(0, Employee.class);
635
                Employee emp = row.get(0, Employee.class);
581
            String string = row.get(1, String.class);
636
                String string = row.get(1, String.class);
582
            ids = "_" + emp.getId() + "_" + string;
637
                ids = "_" + emp.getId() + "_" + string;
583
            assertFalse("Result was not distinct", testSet.contains(ids));
638
                assertFalse("Result was not distinct", testSet.contains(ids));
584
            testSet.add(ids);
639
                testSet.add(ids);
640
            }
641
        } finally {
642
            rollbackTransaction(em);
643
            closeEntityManager(em);
585
        }
644
        }
586
    }
645
    }
587
646
Lines 609-617 Link Here
609
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
668
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
610
        Predicate firstOr = qb.or(qb.equal(root.get(Employee_.id), emp1.getId()), qb.equal(root.get(Employee_.id), emp2.getId()));
669
        Predicate firstOr = qb.or(qb.equal(root.get(Employee_.id), emp1.getId()), qb.equal(root.get(Employee_.id), emp2.getId()));
611
        cq.where( qb.or(firstOr, qb.equal(root.get(Employee_.id), emp3.getId())) );
670
        cq.where( qb.or(firstOr, qb.equal(root.get(Employee_.id), emp3.getId())) );
612
        List result = em.createQuery(cq).getResultList();
671
        beginTransaction(em);
672
        try {
673
            List result = em.createQuery(cq).getResultList();
613
674
614
        Assert.assertTrue("Double OR test failed", comparer.compareObjects(result, expectedResult));
675
            Assert.assertTrue("Double OR test failed", comparer.compareObjects(result, expectedResult));
676
        } finally {
677
            rollbackTransaction(em);
678
            closeEntityManager(em);
679
        }
615
    }
680
    }
616
681
617
    //Test case for equals in EJBQL
682
    //Test case for equals in EJBQL
Lines 628-636 Link Here
628
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
693
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
629
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
694
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
630
        cq.where( qb.equal(root.get(Employee_.firstName), expectedResult.getFirstName() ) );
695
        cq.where( qb.equal(root.get(Employee_.firstName), expectedResult.getFirstName() ) );
631
        List result = em.createQuery(cq).getResultList();
696
        beginTransaction(em);
697
        try {
698
            List result = em.createQuery(cq).getResultList();
632
699
633
        Assert.assertTrue("Equals test failed", comparer.compareObjects(expectedResult, result));
700
            Assert.assertTrue("Equals test failed", comparer.compareObjects(expectedResult, result));
701
        } finally {
702
            rollbackTransaction(em);
703
            closeEntityManager(em);
704
        }
634
    }
705
    }
635
706
636
    //Test case for equals with join in EJBQL
707
    //Test case for equals with join in EJBQL
Lines 650-658 Link Here
650
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
721
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
651
        Join managedEmp = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).join(Employee_.managedEmployees);
722
        Join managedEmp = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).join(Employee_.managedEmployees);
652
        cq.where( qb.equal(managedEmp.get(Employee_.address).get(Address_.city), "Ottawa" ) );
723
        cq.where( qb.equal(managedEmp.get(Employee_.address).get(Address_.city), "Ottawa" ) );
653
        List result = em.createQuery(cq).getResultList();
724
        beginTransaction(em);
725
        try {
726
            List result = em.createQuery(cq).getResultList();
654
727
655
        Assert.assertTrue("Equals test with Join failed", comparer.compareObjects(result, expectedResult));
728
            Assert.assertTrue("Equals test with Join failed", comparer.compareObjects(result, expectedResult));
729
        } finally {
730
            rollbackTransaction(em);
731
            closeEntityManager(em);
732
        }
656
    }
733
    }
657
734
658
    public void collectionMemberIdentifierEqualsTest() {
735
    public void collectionMemberIdentifierEqualsTest() {
Lines 672-680 Link Here
672
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
749
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
673
        Join phones = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).join(Employee_.phoneNumbers);
750
        Join phones = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).join(Employee_.phoneNumbers);
674
        cq.where( qb.equal(phones, qb.parameter(PhoneNumber.class, "1") ) );
751
        cq.where( qb.equal(phones, qb.parameter(PhoneNumber.class, "1") ) );
675
        List result = em.createQuery(cq).setParameter("1", phoneNumber).getResultList();
752
        beginTransaction(em);
753
        try {
754
            List result = em.createQuery(cq).setParameter("1", phoneNumber).getResultList();
676
755
677
        Assert.assertTrue("CollectionMemberIdentifierEqualsTest failed", comparer.compareObjects(expectedResult, result));
756
            Assert.assertTrue("CollectionMemberIdentifierEqualsTest failed", comparer.compareObjects(expectedResult, result));
757
        } finally {
758
            rollbackTransaction(em);
759
            closeEntityManager(em);
760
        }
678
    }
761
    }
679
762
680
    public void abstractSchemaIdentifierEqualsTest() {
763
    public void abstractSchemaIdentifierEqualsTest() {
Lines 689-697 Link Here
689
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
772
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
690
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
773
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
691
        cq.where( qb.equal(root, qb.parameter(Employee.class, "1") ) );
774
        cq.where( qb.equal(root, qb.parameter(Employee.class, "1") ) );
692
        List result = em.createQuery(cq).setParameter("1", expectedResult).getResultList();
775
        beginTransaction(em);
776
        try {
777
            List result = em.createQuery(cq).setParameter("1", expectedResult).getResultList();
693
778
694
        Assert.assertTrue("abstractSchemaIdentifierEqualsTest failed", comparer.compareObjects(expectedResult, result));
779
            Assert.assertTrue("abstractSchemaIdentifierEqualsTest failed", comparer.compareObjects(expectedResult, result));
780
        } finally {
781
            rollbackTransaction(em);
782
            closeEntityManager(em);
783
        }
695
    }
784
    }
696
785
697
    public void abstractSchemaIdentifierNotEqualsTest() {
786
    public void abstractSchemaIdentifierNotEqualsTest() {
Lines 710-718 Link Here
710
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
799
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
711
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
800
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
712
        cq.where( qb.notEqual(root, qb.parameter(Employee.class, "1") ) );
801
        cq.where( qb.notEqual(root, qb.parameter(Employee.class, "1") ) );
713
        List result = em.createQuery(cq).setParameter("1", emp).getResultList();
802
        beginTransaction(em);
803
        try {
804
            List result = em.createQuery(cq).setParameter("1", emp).getResultList();
714
805
715
        Assert.assertTrue("abstractSchemaIdentifierNotEqualsTest failed", comparer.compareObjects(result, expectedResult));
806
            Assert.assertTrue("abstractSchemaIdentifierNotEqualsTest failed", comparer.compareObjects(result, expectedResult));
807
        } finally {
808
            rollbackTransaction(em);
809
            closeEntityManager(em);
810
        }
716
    }
811
    }
717
812
718
    public void simpleInOneDotTest() {
813
    public void simpleInOneDotTest() {
Lines 744-752 Link Here
744
        Predicate firstAnd = qb.and( qb.equal(phone.get(PhoneNumber_.areaCode), empPhoneNumbers.getAreaCode()), 
839
        Predicate firstAnd = qb.and( qb.equal(phone.get(PhoneNumber_.areaCode), empPhoneNumbers.getAreaCode()), 
745
                qb.equal(root.get(Employee_.firstName), expectedResult.getFirstName()));
840
                qb.equal(root.get(Employee_.firstName), expectedResult.getFirstName()));
746
        cq.where( qb.and(firstAnd, qb.equal(root.get(Employee_.lastName), expectedResult.getLastName())) );
841
        cq.where( qb.and(firstAnd, qb.equal(root.get(Employee_.lastName), expectedResult.getLastName())) );
747
        Employee result = em.createQuery(cq).getSingleResult();
842
        beginTransaction(em);
843
        try {
844
            Employee result = em.createQuery(cq).getSingleResult();
748
845
749
        Assert.assertTrue("Simple In Dot Test failed", comparer.compareObjects(result, expectedResult));
846
            Assert.assertTrue("Simple In Dot Test failed", comparer.compareObjects(result, expectedResult));
847
        } finally {
848
            rollbackTransaction(em);
849
            closeEntityManager(em);
850
        }
750
    }
851
    }
751
852
752
    public void selectAverageQueryForByteColumnTest() {
853
    public void selectAverageQueryForByteColumnTest() {
Lines 758-766 Link Here
758
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
859
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
759
        //casting types again.  Avg takes a number, so Path<Object> won't compile
860
        //casting types again.  Avg takes a number, so Path<Object> won't compile
760
        cq.select( qb.avg( root.get(Employee_.salary) ) );
861
        cq.select( qb.avg( root.get(Employee_.salary) ) );
761
        Object result = em.createQuery(cq).getSingleResult();
862
        beginTransaction(em);
863
        try {
864
            Object result = em.createQuery(cq).getSingleResult();
762
865
763
        Assert.assertTrue("AVG result type [" + result.getClass() + "] not of type Double", result.getClass() == Double.class);
866
            Assert.assertTrue("AVG result type [" + result.getClass() + "] not of type Double", result.getClass() == Double.class);
867
        } finally {
868
            rollbackTransaction(em);
869
            closeEntityManager(em);
870
        }
764
    }
871
    }
765
872
766
    public void simpleInTest() {
873
    public void simpleInTest() {
Lines 774-782 Link Here
774
        CriteriaBuilder qb = em.getCriteriaBuilder();
881
        CriteriaBuilder qb = em.getCriteriaBuilder();
775
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
882
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
776
        cq.where( qb.in(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.id)).value(expectedResult.getId()) );
883
        cq.where( qb.in(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.id)).value(expectedResult.getId()) );
777
        List result = em.createQuery(cq).getResultList();
884
        beginTransaction(em);
885
        try {
886
            List result = em.createQuery(cq).getResultList();
778
887
779
        Assert.assertTrue("Simple In Test failed", comparer.compareObjects(result, expectedResult));
888
            Assert.assertTrue("Simple In Test failed", comparer.compareObjects(result, expectedResult));
889
        } finally {
890
            rollbackTransaction(em);
891
            closeEntityManager(em);
892
        }
780
    }
893
    }
781
    
894
    
782
    public void simpleInListTest() {
895
    public void simpleInListTest() {
Lines 796-804 Link Here
796
        //passing a collection to IN might not be supported in criteria api, trying to get around it by hidding the type
909
        //passing a collection to IN might not be supported in criteria api, trying to get around it by hidding the type
797
        ParameterExpression exp = qb.parameter(List.class, "result");
910
        ParameterExpression exp = qb.parameter(List.class, "result");
798
        cq.where( qb.in(root.get(Employee_.id)).value(exp) );
911
        cq.where( qb.in(root.get(Employee_.id)).value(exp) );
799
        List result = em.createQuery(cq).setParameter("result", expectedResultList).getResultList();
912
        beginTransaction(em);
913
        try {
914
            List result = em.createQuery(cq).setParameter("result", expectedResultList).getResultList();
800
915
801
        Assert.assertTrue("Simple In Test failed", comparer.compareObjects(result, expectedResult));
916
            Assert.assertTrue("Simple In Test failed", comparer.compareObjects(result, expectedResult));
917
        } finally {
918
            rollbackTransaction(em);
919
            closeEntityManager(em);
920
        }
802
    }
921
    }
803
922
804
    public void simpleLengthTest() {
923
    public void simpleLengthTest() {
Lines 816-825 Link Here
816
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
935
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
817
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
936
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
818
        cq.where( qb.equal( qb.length(root.get(Employee_.firstName)) , expectedResult.getFirstName().length()) );
937
        cq.where( qb.equal( qb.length(root.get(Employee_.firstName)) , expectedResult.getFirstName().length()) );
819
        
938
        beginTransaction(em);
820
        List result = em.createQuery(cq).getResultList();
939
        try {        
940
            List result = em.createQuery(cq).getResultList();
821
941
822
        Assert.assertTrue("Simple Length Test failed", comparer.compareObjects(result, expectedResult));
942
            Assert.assertTrue("Simple Length Test failed", comparer.compareObjects(result, expectedResult));
943
        } finally {
944
            rollbackTransaction(em);
945
            closeEntityManager(em);
946
        }
823
    }
947
    }
824
948
825
949
Lines 836-845 Link Here
836
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
960
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
837
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
961
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
838
        cq.where( qb.like( root.get(Employee_.firstName), partialFirstName) );
962
        cq.where( qb.like( root.get(Employee_.firstName), partialFirstName) );
963
        beginTransaction(em);
964
        try { 
965
            List result = em.createQuery(cq).getResultList();
839
966
840
        List result = em.createQuery(cq).getResultList();
967
            Assert.assertTrue("Simple Like Test failed", comparer.compareObjects(result, expectedResult));
841
968
        } finally {
842
        Assert.assertTrue("Simple Like Test failed", comparer.compareObjects(result, expectedResult));
969
            rollbackTransaction(em);
970
            closeEntityManager(em);
971
        }
843
    }
972
    }
844
973
845
    public void simpleLikeTestWithParameter() {
974
    public void simpleLikeTestWithParameter() {
Lines 867-876 Link Here
867
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
996
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
868
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
997
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
869
        cq.where( qb.like( root.get(Employee_.firstName), qb.parameter(String.class, "1")) );
998
        cq.where( qb.like( root.get(Employee_.firstName), qb.parameter(String.class, "1")) );
999
        beginTransaction(em);
1000
        try { 
1001
            List result = em.createQuery(cq).setParameter("1", partialFirstName).getResultList();
870
1002
871
        List result = em.createQuery(cq).setParameter("1", partialFirstName).getResultList();
1003
            Assert.assertTrue("Simple Like Test with Parameter failed", comparer.compareObjects(result, expectedResult));
872
1004
        } finally {
873
        Assert.assertTrue("Simple Like Test with Parameter failed", comparer.compareObjects(result, expectedResult));
1005
            rollbackTransaction(em);
1006
            closeEntityManager(em);
1007
        }
874
    }
1008
    }
875
1009
876
    public void simpleLikeEscapeTestWithParameter() {
1010
    public void simpleLikeEscapeTestWithParameter() {
Lines 906-915 Link Here
906
            patternString = "234 RUBY \\_Way";
1040
            patternString = "234 RUBY \\_Way";
907
            escChar = new Character('\\');
1041
            escChar = new Character('\\');
908
        }
1042
        }
1043
        beginTransaction(em);
1044
        try {
1045
            List result = em.createQuery(cq).setParameter("pattern", patternString).setParameter("esc", escChar).getResultList();
909
1046
910
        List result = em.createQuery(cq).setParameter("pattern", patternString).setParameter("esc", escChar).getResultList();
1047
            Assert.assertTrue("Simple Escape Underscore test failed", comparer.compareObjects(result, expectedResult));
911
1048
        } finally {
912
        Assert.assertTrue("Simple Escape Underscore test failed", comparer.compareObjects(result, expectedResult));
1049
            rollbackTransaction(em);
1050
            closeEntityManager(em);
1051
        }
913
    }
1052
    }
914
1053
915
    public void simpleNotBetweenTest() {
1054
    public void simpleNotBetweenTest() {
Lines 935-945 Link Here
935
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1074
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
936
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1075
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
937
        cq.where( qb.not(qb.between(root.get(Employee_.id), emp1.getId(), emp2.getId())) );
1076
        cq.where( qb.not(qb.between(root.get(Employee_.id), emp1.getId(), emp2.getId())) );
1077
        beginTransaction(em);
1078
        try {
1079
            List result = em.createQuery(cq).getResultList();
938
1080
939
        List result = em.createQuery(cq).getResultList();
1081
            Assert.assertTrue("Simple Not Between Test failed", comparer.compareObjects(result, expectedResult));
940
1082
        } finally {
941
        Assert.assertTrue("Simple Not Between Test failed", comparer.compareObjects(result, expectedResult));
1083
            rollbackTransaction(em);
942
1084
            closeEntityManager(em);
1085
        }
943
    }
1086
    }
944
1087
945
    public void simpleNotEqualsVariablesInteger() {
1088
    public void simpleNotEqualsVariablesInteger() {
Lines 957-967 Link Here
957
        CriteriaBuilder qb = em.getCriteriaBuilder();
1100
        CriteriaBuilder qb = em.getCriteriaBuilder();
958
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1101
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
959
        cq.where( qb.notEqual(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.id), emp.getId()) );
1102
        cq.where( qb.notEqual(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.id), emp.getId()) );
1103
        beginTransaction(em);
1104
        try {
1105
            List result = em.createQuery(cq).getResultList();
960
1106
961
        List result = em.createQuery(cq).getResultList();
1107
            Assert.assertTrue("Simple Like Test with Parameter failed", comparer.compareObjects(result, expectedResult));
962
1108
        } finally {
963
        Assert.assertTrue("Simple Like Test with Parameter failed", comparer.compareObjects(result, expectedResult));
1109
            rollbackTransaction(em);
964
1110
            closeEntityManager(em);
1111
        }
965
    }
1112
    }
966
1113
967
    public void simpleNotInTest() {
1114
    public void simpleNotInTest() {
Lines 988-997 Link Here
988
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1135
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
989
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1136
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
990
        cq.where( qb.not(qb.in(root.get(Employee_.id)).value(emp.getId())) );
1137
        cq.where( qb.not(qb.in(root.get(Employee_.id)).value(emp.getId())) );
1138
        beginTransaction(em);
1139
        try {
1140
            List result = em.createQuery(cq).getResultList();
991
1141
992
        List result = em.createQuery(cq).getResultList();
1142
            Assert.assertTrue("Simple Not In Test failed", comparer.compareObjects(result, expectedResult));
993
1143
        } finally {
994
        Assert.assertTrue("Simple Not In Test failed", comparer.compareObjects(result, expectedResult));
1144
            rollbackTransaction(em);
1145
            closeEntityManager(em);
1146
        }
995
    }
1147
    }
996
1148
997
    public void simpleNotLikeTest() {
1149
    public void simpleNotLikeTest() {
Lines 1017-1026 Link Here
1017
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1169
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1018
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1170
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1019
        cq.where( qb.notLike(root.get(Employee_.firstName), partialFirstName ) );
1171
        cq.where( qb.notLike(root.get(Employee_.firstName), partialFirstName ) );
1172
        beginTransaction(em);
1173
        try {
1174
            List result = em.createQuery(cq).getResultList();
1020
1175
1021
        List result = em.createQuery(cq).getResultList();
1176
            Assert.assertTrue("Simple Not Like Test failed", comparer.compareObjects(result, expectedResult));
1022
1177
        } finally {
1023
        Assert.assertTrue("Simple Not Like Test failed", comparer.compareObjects(result, expectedResult));
1178
            rollbackTransaction(em);
1179
            closeEntityManager(em);
1180
        }
1024
    }
1181
    }
1025
1182
1026
    public void simpleOrFollowedByAndTest() {
1183
    public void simpleOrFollowedByAndTest() {
Lines 1039-1049 Link Here
1039
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1196
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1040
        Predicate andOpp = qb.and(qb.equal(root.get(Employee_.id), emp2.getId()), qb.equal(root.get(Employee_.id), emp3.getId()));
1197
        Predicate andOpp = qb.and(qb.equal(root.get(Employee_.id), emp2.getId()), qb.equal(root.get(Employee_.id), emp3.getId()));
1041
        cq.where( qb.or( qb.equal(root.get(Employee_.id), emp1.getId()), andOpp ) );
1198
        cq.where( qb.or( qb.equal(root.get(Employee_.id), emp1.getId()), andOpp ) );
1199
        beginTransaction(em);
1200
        try {
1201
            List result = em.createQuery(cq).getResultList();
1042
1202
1043
        List result = em.createQuery(cq).getResultList();
1203
            Assert.assertTrue("Simple Or followed by And Test failed", comparer.compareObjects(result, expectedResult));
1044
1204
        } finally {
1045
        Assert.assertTrue("Simple Or followed by And Test failed", comparer.compareObjects(result, expectedResult));
1205
            rollbackTransaction(em);
1046
1206
            closeEntityManager(em);
1207
        }
1047
    }
1208
    }
1048
1209
1049
    public void simpleOrFollowedByAndTestWithStaticNames() {
1210
    public void simpleOrFollowedByAndTestWithStaticNames() {
Lines 1067-1076 Link Here
1067
        javax.persistence.criteria.Expression empFName = root.get(Employee_.firstName);
1228
        javax.persistence.criteria.Expression empFName = root.get(Employee_.firstName);
1068
        Predicate andOpp = qb.and(qb.equal(empFName, "Bob"), qb.equal(root.get(Employee_.lastName), "Smith"));
1229
        Predicate andOpp = qb.and(qb.equal(empFName, "Bob"), qb.equal(root.get(Employee_.lastName), "Smith"));
1069
        cq.where( qb.or( qb.equal(empFName, "John"), andOpp ) );
1230
        cq.where( qb.or( qb.equal(empFName, "John"), andOpp ) );
1231
        beginTransaction(em);
1232
        try {
1233
            List result = em.createQuery(cq).getResultList();
1070
1234
1071
        List result = em.createQuery(cq).getResultList();
1235
            Assert.assertTrue("Simple Or followed by And With Static Names Test failed", comparer.compareObjects(result, expectedResult));
1072
1236
        } finally {
1073
        Assert.assertTrue("Simple Or followed by And With Static Names Test failed", comparer.compareObjects(result, expectedResult));
1237
            rollbackTransaction(em);
1238
            closeEntityManager(em);
1239
        }
1074
    }
1240
    }
1075
1241
1076
    public void simpleOrTest() {
1242
    public void simpleOrTest() {
Lines 1090-1099 Link Here
1090
        javax.persistence.criteria.Expression empId = root.get(Employee_.id);
1256
        javax.persistence.criteria.Expression empId = root.get(Employee_.id);
1091
        cq.where( qb.or( qb.equal(empId, emp1.getId()), qb.equal(empId, emp2.getId()) ) );
1257
        cq.where( qb.or( qb.equal(empId, emp1.getId()), qb.equal(empId, emp2.getId()) ) );
1092
1258
1093
        List result = em.createQuery(cq).getResultList();
1259
        beginTransaction(em);
1094
        clearCache();
1260
        try {
1261
            List result = em.createQuery(cq).getResultList();
1262
            clearCache();
1095
1263
1096
        Assert.assertTrue("Simple Or Test failed", comparer.compareObjects(result, expectedResult));
1264
            Assert.assertTrue("Simple Or Test failed", comparer.compareObjects(result, expectedResult));
1265
        } finally {
1266
            rollbackTransaction(em);
1267
            closeEntityManager(em);
1268
        }
1097
    }
1269
    }
1098
1270
1099
    public void simpleParameterTest() {
1271
    public void simpleParameterTest() {
Lines 1122-1131 Link Here
1122
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1294
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1123
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1295
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1124
        cq.where( qb.equal(root.get(Employee_.firstName), qb.parameter(String.class,parameterName)) );
1296
        cq.where( qb.equal(root.get(Employee_.firstName), qb.parameter(String.class,parameterName)) );
1297
        beginTransaction(em);
1298
        try {
1299
            List result = em.createQuery(cq).setParameter(parameterName, expectedResult.getFirstName()).getResultList();
1125
1300
1126
        List result = em.createQuery(cq).setParameter(parameterName, expectedResult.getFirstName()).getResultList();
1301
            Assert.assertTrue("Simple Parameter Test failed", comparer.compareObjects(result, expectedResult));
1127
1302
        } finally {
1128
        Assert.assertTrue("Simple Parameter Test failed", comparer.compareObjects(result, expectedResult));
1303
            rollbackTransaction(em);
1304
            closeEntityManager(em);
1305
        }
1129
    }
1306
    }
1130
1307
1131
    public void simpleParameterTestChangingParameters() {
1308
    public void simpleParameterTestChangingParameters() {
Lines 1163-1178 Link Here
1163
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1340
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1164
        cq.where( qb.equal(root.get(Employee_.firstName), qb.parameter(String.class, "1")) );
1341
        cq.where( qb.equal(root.get(Employee_.firstName), qb.parameter(String.class, "1")) );
1165
1342
1166
        List firstResultSet = em.createQuery(cq).setParameter("1", firstParameters.get(0)).getResultList();
1343
        beginTransaction(em);
1167
        clearCache();
1344
        try {
1168
        List secondResultSet = em.createQuery(cq).setParameter("1", secondParameters.get(0)).getResultList();
1345
            List firstResultSet = em.createQuery(cq).setParameter("1", firstParameters.get(0)).getResultList();
1169
        clearCache();
1346
            clearCache();
1170
        Vector result = new Vector();
1347
            List secondResultSet = em.createQuery(cq).setParameter("1", secondParameters.get(0)).getResultList();
1171
        result.addAll(firstResultSet);
1348
            clearCache();
1172
        result.addAll(secondResultSet);
1349
            Vector result = new Vector();
1350
            result.addAll(firstResultSet);
1351
            result.addAll(secondResultSet);
1173
1352
1174
        Assert.assertTrue("Simple Parameter Test Changing Parameters failed", comparer.compareObjects(result, expectedResult));
1353
            Assert.assertTrue("Simple Parameter Test Changing Parameters failed", comparer.compareObjects(result, expectedResult));
1175
1354
        } finally {
1355
            rollbackTransaction(em);
1356
            closeEntityManager(em);
1357
        }
1176
    }
1358
    }
1177
1359
1178
    public void simpleReverseAbsTest() {
1360
    public void simpleReverseAbsTest() {
Lines 1187-1197 Link Here
1187
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1369
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1188
        //equal can't take an int as the first argument, it must be an expression
1370
        //equal can't take an int as the first argument, it must be an expression
1189
        cq.where( qb.equal(qb.literal(expectedResult.getSalary()), qb.abs(root.get(Employee_.salary))) );
1371
        cq.where( qb.equal(qb.literal(expectedResult.getSalary()), qb.abs(root.get(Employee_.salary))) );
1372
        beginTransaction(em);
1373
        try {
1374
            List result = em.createQuery(cq).getResultList();
1190
1375
1191
        List result = em.createQuery(cq).getResultList();
1376
            Assert.assertTrue("Simple Reverse Abs test failed", comparer.compareObjects(result, expectedResult));
1192
1377
        } finally {
1193
        Assert.assertTrue("Simple Reverse Abs test failed", comparer.compareObjects(result, expectedResult));
1378
            rollbackTransaction(em);
1194
1379
            closeEntityManager(em);
1380
        }
1195
    }
1381
    }
1196
1382
1197
    public void simpleReverseConcatTest() {
1383
    public void simpleReverseConcatTest() {
Lines 1210-1219 Link Here
1210
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1396
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1211
        //One argument to concat must be an expression
1397
        //One argument to concat must be an expression
1212
        cq.where( qb.equal(qb.concat(partOne, qb.literal(partTwo)), root.get(Employee_.firstName)) );
1398
        cq.where( qb.equal(qb.concat(partOne, qb.literal(partTwo)), root.get(Employee_.firstName)) );
1399
        beginTransaction(em);
1400
        try {
1401
            List result = em.createQuery(cq).getResultList();
1213
1402
1214
        List result = em.createQuery(cq).getResultList();
1403
            Assert.assertTrue("Simple Reverse Concat test failed", comparer.compareObjects(result, expectedResult));
1215
1404
        } finally {
1216
        Assert.assertTrue("Simple Reverse Concat test failed", comparer.compareObjects(result, expectedResult));
1405
            rollbackTransaction(em);
1406
            closeEntityManager(em);
1407
        }
1217
    }
1408
    }
1218
1409
1219
    public void simpleReverseEqualsTest() {
1410
    public void simpleReverseEqualsTest() {
Lines 1228-1237 Link Here
1228
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1419
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1229
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1420
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1230
        cq.where( qb.equal(qb.literal(expectedResult.getFirstName()), root.get(Employee_.firstName)) );
1421
        cq.where( qb.equal(qb.literal(expectedResult.getFirstName()), root.get(Employee_.firstName)) );
1422
        beginTransaction(em);
1423
        try {
1424
            List result = em.createQuery(cq).getResultList();
1231
1425
1232
        List result = em.createQuery(cq).getResultList();
1426
            Assert.assertTrue("Simple Reverse Equals test failed", comparer.compareObjects(result, expectedResult));
1233
1427
        } finally {
1234
        Assert.assertTrue("Simple Reverse Equals test failed", comparer.compareObjects(result, expectedResult));
1428
            rollbackTransaction(em);
1429
            closeEntityManager(em);
1430
        }
1235
    }
1431
    }
1236
1432
1237
    public void simpleReverseLengthTest() {
1433
    public void simpleReverseLengthTest() {
Lines 1246-1256 Link Here
1246
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1442
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1247
        javax.persistence.criteria.Expression<Integer> length = qb.length(root.get(Employee_.firstName));
1443
        javax.persistence.criteria.Expression<Integer> length = qb.length(root.get(Employee_.firstName));
1248
        cq.where( qb.equal(qb.literal(expectedResult.getFirstName().length()), length) );
1444
        cq.where( qb.equal(qb.literal(expectedResult.getFirstName().length()), length) );
1445
        beginTransaction(em);
1446
        try {
1447
            List result = em.createQuery(cq).getResultList();
1249
1448
1250
        List result = em.createQuery(cq).getResultList();
1449
            Assert.assertTrue("Simple Reverse Length test failed", comparer.compareObjects(result, expectedResult));
1251
1450
        } finally {
1252
        Assert.assertTrue("Simple Reverse Length test failed", comparer.compareObjects(result, expectedResult));
1451
            rollbackTransaction(em);
1253
1452
            closeEntityManager(em);
1453
        }
1254
    }
1454
    }
1255
1455
1256
    public void simpleReverseParameterTest() {
1456
    public void simpleReverseParameterTest() {
Lines 1280-1289 Link Here
1280
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1480
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1281
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1481
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1282
        cq.where( qb.equal(qb.parameter(String.class, "1"), root.get(Employee_.firstName)) );
1482
        cq.where( qb.equal(qb.parameter(String.class, "1"), root.get(Employee_.firstName)) );
1483
        beginTransaction(em);
1484
        try {
1485
            List result = em.createQuery(cq).setParameter("1", parameters.get(0)).getResultList();
1283
1486
1284
        List result = em.createQuery(cq).setParameter("1", parameters.get(0)).getResultList();
1487
            Assert.assertTrue("Simple Reverse Parameter test failed", comparer.compareObjects(result, expectedResult));
1285
1488
        } finally {
1286
        Assert.assertTrue("Simple Reverse Parameter test failed", comparer.compareObjects(result, expectedResult));
1489
            rollbackTransaction(em);
1490
            closeEntityManager(em);
1491
        }
1287
    }
1492
    }
1288
1493
1289
    public void simpleReverseSqrtTest() {
1494
    public void simpleReverseSqrtTest() {
Lines 1307-1317 Link Here
1307
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1512
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1308
        javax.persistence.criteria.Expression<Double> sqrt = qb.sqrt(root.get(Employee_.salary));
1513
        javax.persistence.criteria.Expression<Double> sqrt = qb.sqrt(root.get(Employee_.salary));
1309
        cq.where( qb.equal(qb.literal(salarySquareRoot), sqrt) );
1514
        cq.where( qb.equal(qb.literal(salarySquareRoot), sqrt) );
1515
        beginTransaction(em);
1516
        try {
1517
            List result = em.createQuery(cq).getResultList();
1310
1518
1311
        List result = em.createQuery(cq).getResultList();
1519
            Assert.assertTrue("Simple Reverse Square Root test failed", comparer.compareObjects(result, expectedResult));
1312
1520
        } finally {
1313
        Assert.assertTrue("Simple Reverse Square Root test failed", comparer.compareObjects(result, expectedResult));
1521
            rollbackTransaction(em);
1314
1522
            closeEntityManager(em);
1523
        }
1315
    }
1524
    }
1316
1525
1317
    public void simpleReverseSubstringTest() {
1526
    public void simpleReverseSubstringTest() {
Lines 1331-1341 Link Here
1331
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1540
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1332
        javax.persistence.criteria.Expression<String> substring = qb.substring(root.get(Employee_.firstName), 1, 2);
1541
        javax.persistence.criteria.Expression<String> substring = qb.substring(root.get(Employee_.firstName), 1, 2);
1333
        cq.where( qb.equal(qb.literal(firstNamePart), substring) );
1542
        cq.where( qb.equal(qb.literal(firstNamePart), substring) );
1543
        beginTransaction(em);
1544
        try {
1545
            List result = em.createQuery(cq).getResultList();
1334
1546
1335
        List result = em.createQuery(cq).getResultList();
1547
            Assert.assertTrue("Simple Reverse SubString test failed", comparer.compareObjects(result, expectedResult));
1336
1548
        } finally {
1337
        Assert.assertTrue("Simple Reverse SubString test failed", comparer.compareObjects(result, expectedResult));
1549
            rollbackTransaction(em);
1338
1550
            closeEntityManager(em);
1551
        }
1339
    }
1552
    }
1340
1553
1341
1554
Lines 1359-1369 Link Here
1359
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1572
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1360
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1573
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1361
        cq.where( qb.equal(qb.sqrt(root.get(Employee_.salary)), salarySquareRoot) );
1574
        cq.where( qb.equal(qb.sqrt(root.get(Employee_.salary)), salarySquareRoot) );
1575
        beginTransaction(em);
1576
        try {
1577
            List result = em.createQuery(cq).getResultList();
1362
1578
1363
        List result = em.createQuery(cq).getResultList();
1579
            Assert.assertTrue("Simple Square Root test failed", comparer.compareObjects(result, expectedResult));
1364
1580
        } finally {
1365
        Assert.assertTrue("Simple Square Root test failed", comparer.compareObjects(result, expectedResult));
1581
            rollbackTransaction(em);
1366
1582
            closeEntityManager(em);
1583
        }
1367
    }
1584
    }
1368
1585
1369
    public void simpleSubstringTest() {
1586
    public void simpleSubstringTest() {
Lines 1380-1388 Link Here
1380
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1597
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1381
        javax.persistence.criteria.Expression<String> substring = qb.substring(root.get(Employee_.firstName), 1, 2);
1598
        javax.persistence.criteria.Expression<String> substring = qb.substring(root.get(Employee_.firstName), 1, 2);
1382
        cq.where( qb.equal(substring, firstNamePart) );
1599
        cq.where( qb.equal(substring, firstNamePart) );
1383
1600
        beginTransaction(em);
1384
        List result = em.createQuery(cq).getResultList();
1601
        try {
1385
        Assert.assertTrue("Simple SubString test failed", comparer.compareObjects(result, expectedResult));
1602
            List result = em.createQuery(cq).getResultList();
1603
            Assert.assertTrue("Simple SubString test failed", comparer.compareObjects(result, expectedResult));
1604
        } finally {
1605
            rollbackTransaction(em);
1606
            closeEntityManager(em);
1607
        }
1386
    }
1608
    }
1387
1609
1388
    public void simpleNullTest() {
1610
    public void simpleNullTest() {
Lines 1413-1427 Link Here
1413
        CriteriaBuilder qb = em.getCriteriaBuilder();
1635
        CriteriaBuilder qb = em.getCriteriaBuilder();
1414
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1636
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1415
        cq.where( qb.isNull(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.firstName)) );
1637
        cq.where( qb.isNull(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.firstName)) );
1638
        beginTransaction(em);
1639
        try {
1640
            List result = em.createQuery(cq).getResultList();
1416
1641
1417
        List result = em.createQuery(cq).getResultList();
1642
            uow = clientSession.acquireUnitOfWork();
1643
            uow.deleteObject(nullEmployee);
1644
            uow.commit();
1418
1645
1419
        uow = clientSession.acquireUnitOfWork();
1646
            Assert.assertTrue("Simple Null test failed", comparer.compareObjects(result, expectedResult));
1420
        uow.deleteObject(nullEmployee);
1647
        } finally {
1421
        uow.commit();
1648
            rollbackTransaction(em);
1422
1649
            closeEntityManager(em);
1423
        Assert.assertTrue("Simple Null test failed", comparer.compareObjects(result, expectedResult));
1650
        }
1424
1425
    }
1651
    }
1426
1652
1427
    public void simpleNotNullTest() {
1653
    public void simpleNotNullTest() {
Lines 1451-1463 Link Here
1451
        CriteriaBuilder qb = em.getCriteriaBuilder();
1677
        CriteriaBuilder qb = em.getCriteriaBuilder();
1452
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1678
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1453
        cq.where( qb.isNotNull(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.firstName)) );
1679
        cq.where( qb.isNotNull(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.firstName)) );
1454
        List result = em.createQuery(cq).getResultList();
1680
        beginTransaction(em);
1681
        try {
1682
            List result = em.createQuery(cq).getResultList();
1455
1683
1456
        uow = clientSession.acquireUnitOfWork();
1684
            uow = clientSession.acquireUnitOfWork();
1457
        uow.deleteObject(nullEmployee);
1685
            uow.deleteObject(nullEmployee);
1458
        uow.commit();
1686
            uow.commit();
1459
1687
1460
        Assert.assertTrue("Simple Not Null test failed", comparer.compareObjects(result, expectedResult));
1688
            Assert.assertTrue("Simple Not Null test failed", comparer.compareObjects(result, expectedResult));
1689
        } finally {
1690
            rollbackTransaction(em);
1691
            closeEntityManager(em);
1692
        }
1461
    }
1693
    }
1462
1694
1463
    public void distinctTest() {
1695
    public void distinctTest() {
Lines 1480-1524 Link Here
1480
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1712
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1481
        cq.distinct(true);
1713
        cq.distinct(true);
1482
        cq.where( qb.equal(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.lastName), "Smith") );
1714
        cq.where( qb.equal(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.lastName), "Smith") );
1483
        List result = em.createQuery(cq).getResultList();
1715
        beginTransaction(em);
1716
        try {
1717
            List result = em.createQuery(cq).getResultList();
1484
1718
1485
        Assert.assertTrue("Distinct test failed", comparer.compareObjects(result, expectedResult));
1719
            Assert.assertTrue("Distinct test failed", comparer.compareObjects(result, expectedResult));
1720
        } finally {
1721
            rollbackTransaction(em);
1722
            closeEntityManager(em);
1723
        }
1486
    }
1724
    }
1487
1725
1488
    public void multipleExecutionOfCriteriaQueryTest() {
1726
    public void multipleExecutionOfCriteriaQueryTest() {
1489
        //bug 5279859
1727
        //bug 5279859
1490
        EntityManager em = createEntityManager();
1728
        EntityManager em = createEntityManager();
1491
        //"SELECT e FROM Employee e where e.address.postalCode = :postalCode"
1729
        //"SELECT e FROM Employee e where e.address.postalCode = :postalCode"
1492
        CriteriaBuilder qb = em.getCriteriaBuilder();
1730
        beginTransaction(em);
1493
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1494
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1495
        cq.where( qb.equal(root.get(Employee_.address).get(Address_.postalCode), qb.parameter(String.class, "postalCode")) );
1496
        Query query = em.createQuery(cq);
1497
        query.setParameter("postalCode", "K1T3B9");
1498
        try {
1731
        try {
1499
            query.getResultList();
1732
            CriteriaBuilder qb = em.getCriteriaBuilder();
1500
        } catch (RuntimeException ex) {
1733
            CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1501
            fail("Failed to execute query, exception resulted on first execution, not expected");
1734
            Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1735
            cq.where( qb.equal(root.get(Employee_.address).get(Address_.postalCode), qb.parameter(String.class, "postalCode")) );
1736
            Query query = em.createQuery(cq);
1737
            query.setParameter("postalCode", "K1T3B9");
1738
            try {
1739
                query.getResultList();
1740
            } catch (RuntimeException ex) {
1741
                fail("Failed to execute query, exception resulted on first execution, not expected");
1742
            }
1743
            try {
1744
                query.getResultList();
1745
            } catch (RuntimeException ex) {
1746
                fail("Failed to execute query, exception resulted on second execution");
1747
            }
1748
            query = em.createNamedQuery("findEmployeeByPostalCode");
1749
            query.setParameter("postalCode", "K1T3B9");
1750
            try {
1751
                query.getResultList();
1752
            } catch (RuntimeException ex) {
1753
                fail("Failed to execute query, exception resulted on first execution, of second use of named query");
1754
            }
1755
            query.setMaxResults(100000);
1756
            try {
1757
                query.getResultList();
1758
            } catch (RuntimeException ex) {
1759
                fail("Failed to execute query, exception resulted after setting max results (forcing reprepare)");
1760
            }
1761
        } finally {
1762
            rollbackTransaction(em);
1763
            closeEntityManager(em);
1502
        }
1764
        }
1503
        try {
1504
            query.getResultList();
1505
        } catch (RuntimeException ex) {
1506
            fail("Failed to execute query, exception resulted on second execution");
1507
        }
1508
        query = em.createNamedQuery("findEmployeeByPostalCode");
1509
        query.setParameter("postalCode", "K1T3B9");
1510
        try {
1511
            query.getResultList();
1512
        } catch (RuntimeException ex) {
1513
            fail("Failed to execute query, exception resulted on first execution, of second use of named query");
1514
        }
1515
        query.setMaxResults(100000);
1516
        try {
1517
            query.getResultList();
1518
        } catch (RuntimeException ex) {
1519
            fail("Failed to execute query, exception resulted after setting max results (forcing reprepare)");
1520
        }
1521
1522
    }
1765
    }
1523
1766
1524
    public void simpleModTest() {
1767
    public void simpleModTest() {
Lines 1542-1554 Link Here
1542
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1785
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1543
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1786
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1544
        cq.where( qb.gt(qb.mod(root.get(Employee_.salary), 2), 0) );
1787
        cq.where( qb.gt(qb.mod(root.get(Employee_.salary), 2), 0) );
1788
        List result = null;
1545
1789
1546
        List result = em.createQuery(cq).getResultList();
1790
        beginTransaction(em);
1791
        try {
1792
            result = em.createQuery(cq).getResultList();
1547
1793
1548
        Assert.assertTrue("Simple Mod test failed", comparer.compareObjects(result, expectedResult));
1794
            Assert.assertTrue("Simple Mod test failed", comparer.compareObjects(result, expectedResult));
1549
1795
        } finally {
1796
            rollbackTransaction(em);
1797
        }
1550
        // Test MOD(fieldAccess, fieldAccess) glassfish issue 2771
1798
        // Test MOD(fieldAccess, fieldAccess) glassfish issue 2771
1551
1552
        expectedResult = getServerSession().readAllObjects(Employee.class);
1799
        expectedResult = getServerSession().readAllObjects(Employee.class);
1553
        clearCache();
1800
        clearCache();
1554
        
1801
        
Lines 1558-1567 Link Here
1558
        root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1805
        root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1559
        javax.persistence.criteria.Expression<Integer> salaryExp = root.get(Employee_.salary);
1806
        javax.persistence.criteria.Expression<Integer> salaryExp = root.get(Employee_.salary);
1560
        cq.where( qb.equal(qb.mod(salaryExp, salaryExp), 0) );
1807
        cq.where( qb.equal(qb.mod(salaryExp, salaryExp), 0) );
1808
        beginTransaction(em);
1809
        try {
1810
            result = em.createQuery(cq).getResultList();
1561
1811
1562
        result = em.createQuery(cq).getResultList();
1812
            Assert.assertTrue("Simple Mod test(2) failed", comparer.compareObjects(result, expectedResult));  
1563
1813
        } finally {
1564
        Assert.assertTrue("Simple Mod test(2) failed", comparer.compareObjects(result, expectedResult));  
1814
            rollbackTransaction(em);
1815
            closeEntityManager(em);
1816
        }
1565
    }
1817
    }
1566
1818
1567
    public void simpleIsEmptyTest() {
1819
    public void simpleIsEmptyTest() {
Lines 1583-1592 Link Here
1583
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1835
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1584
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1836
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1585
        cq.where( qb.isEmpty(root.get(Employee_.phoneNumbers)) );
1837
        cq.where( qb.isEmpty(root.get(Employee_.phoneNumbers)) );
1838
        beginTransaction(em);
1839
        try {
1840
            List result = em.createQuery(cq).getResultList();
1586
1841
1587
        List result = em.createQuery(cq).getResultList();
1842
            Assert.assertTrue("Simple Is empty test failed", comparer.compareObjects(result, expectedResult));
1588
1843
        } finally {
1589
        Assert.assertTrue("Simple Is empty test failed", comparer.compareObjects(result, expectedResult));
1844
            rollbackTransaction(em);
1845
            closeEntityManager(em);
1846
        }
1590
    }
1847
    }
1591
1848
1592
    public void simpleIsNotEmptyTest() {
1849
    public void simpleIsNotEmptyTest() {
Lines 1607-1617 Link Here
1607
        CriteriaBuilder qb = em.getCriteriaBuilder();
1864
        CriteriaBuilder qb = em.getCriteriaBuilder();
1608
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1865
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1609
        cq.where( qb.isNotEmpty(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.phoneNumbers)) );
1866
        cq.where( qb.isNotEmpty(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.phoneNumbers)) );
1867
        beginTransaction(em);
1868
        try {
1869
            List result = em.createQuery(cq).getResultList();
1610
1870
1611
        List result = em.createQuery(cq).getResultList();
1871
            Assert.assertTrue("Simple is not empty test failed", comparer.compareObjects(result, expectedResult));
1612
1872
        } finally {
1613
        Assert.assertTrue("Simple is not empty test failed", comparer.compareObjects(result, expectedResult));
1873
            rollbackTransaction(em);
1614
1874
            closeEntityManager(em);
1875
        }
1615
    }
1876
    }
1616
1877
1617
    //JPQL parsing test, not applicable to criteria api
1878
    //JPQL parsing test, not applicable to criteria api
Lines 1646-1655 Link Here
1646
        CriteriaQuery<Address> cq = qb.createQuery(Address.class);
1907
        CriteriaQuery<Address> cq = qb.createQuery(Address.class);
1647
        Root<Address> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Address.class));
1908
        Root<Address> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Address.class));
1648
        cq.where( qb.like(root.get(Address_.street), "234 Wandering "+escapeChar+"_Way", escapeChar) );
1909
        cq.where( qb.like(root.get(Address_.street), "234 Wandering "+escapeChar+"_Way", escapeChar) );
1910
        beginTransaction(em);
1911
        try {
1912
            List result = em.createQuery(cq).getResultList();
1649
1913
1650
        List result = em.createQuery(cq).getResultList();
1914
            Assert.assertTrue("Simple Escape Underscore test failed", comparer.compareObjects(result, expectedResult));
1651
1915
        } finally {
1652
        Assert.assertTrue("Simple Escape Underscore test failed", comparer.compareObjects(result, expectedResult));
1916
            rollbackTransaction(em);
1917
            closeEntityManager(em);
1918
        }
1653
    }
1919
    }
1654
1920
1655
    public void smallProjectMemberOfProjectsTest() {
1921
    public void smallProjectMemberOfProjectsTest() {
Lines 1668-1681 Link Here
1668
        //"SELECT OBJECT(employee) FROM Employee employee, SmallProject sp WHERE sp MEMBER OF employee.projects";
1934
        //"SELECT OBJECT(employee) FROM Employee employee, SmallProject sp WHERE sp MEMBER OF employee.projects";
1669
        CriteriaBuilder qb = em.getCriteriaBuilder();
1935
        CriteriaBuilder qb = em.getCriteriaBuilder();
1670
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1936
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1671
        Root<Project> projRoot = cq.from(getEntityManagerFactory().getMetamodel().entity(Project.class));
1937
        Root<SmallProject> projRoot = cq.from(getEntityManagerFactory().getMetamodel().entity(SmallProject.class));
1938
1672
        Root<Employee> empRoot = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1939
        Root<Employee> empRoot = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1673
        cq.where( qb.isMember(projRoot, empRoot.get(Employee_.projects)) );
1940
        cq.where(qb.isMember(projRoot.as(Project.class), empRoot.get(Employee_.projects)) );
1941
        beginTransaction(em);
1942
        try {
1943
            List result = em.createQuery(cq).getResultList();
1674
1944
1675
        List result = em.createQuery(cq).getResultList();
1945
            Assert.assertTrue("Simple small Project Member Of Projects test failed", comparer.compareObjects(result, expectedResult));
1676
1946
        } finally {
1677
        Assert.assertTrue("Simple small Project Member Of Projects test failed", comparer.compareObjects(result, expectedResult));
1947
            rollbackTransaction(em);
1678
1948
            closeEntityManager(em);
1949
        }
1679
    }
1950
    }
1680
1951
1681
    public void smallProjectNOTMemberOfProjectsTest() {
1952
    public void smallProjectNOTMemberOfProjectsTest() {
Lines 1702-1712 Link Here
1702
        CriteriaBuilder qb = em.getCriteriaBuilder();
1973
        CriteriaBuilder qb = em.getCriteriaBuilder();
1703
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1974
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1704
        cq.where( qb.isNotMember(qb.parameter(Project.class, "1"), cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.projects)) );
1975
        cq.where( qb.isNotMember(qb.parameter(Project.class, "1"), cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.projects)) );
1976
        beginTransaction(em);
1977
        try {
1978
            List result = em.createQuery(cq).setParameter("1", smallProject).getResultList();
1705
1979
1706
        List result = em.createQuery(cq).setParameter("1", smallProject).getResultList();
1980
            Assert.assertTrue("Simple small Project NOT Member Of Projects test failed", comparer.compareObjects(result, expectedResult));
1707
1981
        } finally {
1708
        Assert.assertTrue("Simple small Project NOT Member Of Projects test failed", comparer.compareObjects(result, expectedResult));
1982
            rollbackTransaction(em);
1709
1983
            closeEntityManager(em);
1984
        }
1710
    }
1985
    }
1711
1986
1712
    //This test demonstrates the bug 4616218, waiting for bug fix
1987
    //This test demonstrates the bug 4616218, waiting for bug fix
Lines 1730-1739 Link Here
1730
        CriteriaBuilder qb = em.getCriteriaBuilder();
2005
        CriteriaBuilder qb = em.getCriteriaBuilder();
1731
        CriteriaQuery<Long> cq = qb.createQuery(Long.class);
2006
        CriteriaQuery<Long> cq = qb.createQuery(Long.class);
1732
        cq.select(qb.countDistinct(cq.from(getEntityManagerFactory().getMetamodel().entity(PhoneNumber.class)).get(PhoneNumber_.owner)));
2007
        cq.select(qb.countDistinct(cq.from(getEntityManagerFactory().getMetamodel().entity(PhoneNumber.class)).get(PhoneNumber_.owner)));
2008
        beginTransaction(em);
2009
        try {
2010
            List result = em.createQuery(cq).getResultList();
1733
2011
1734
        List result = em.createQuery(cq).getResultList();
2012
            Assert.assertTrue("Simple Select Count One To One test failed", expectedResult.elementAt(0).equals(result.get(0)));
1735
2013
        } finally {
1736
        Assert.assertTrue("Simple Select Count One To One test failed", expectedResult.elementAt(0).equals(result.get(0)));
2014
            rollbackTransaction(em);
2015
            closeEntityManager(em);
2016
        }
1737
    }
2017
    }
1738
2018
1739
    public void selectOneToOneTest() {
2019
    public void selectOneToOneTest() {
Lines 1756-1766 Link Here
1756
        cq.distinct(true);
2036
        cq.distinct(true);
1757
        cq.select(root.get(Employee_.address));
2037
        cq.select(root.get(Employee_.address));
1758
        cq.where(qb.like(root.get(Employee_.lastName), "%Way%"));
2038
        cq.where(qb.like(root.get(Employee_.lastName), "%Way%"));
2039
        beginTransaction(em);
2040
        try {
2041
            List result = em.createQuery(cq).getResultList();
1759
2042
1760
        List result = em.createQuery(cq).getResultList();
2043
            Assert.assertTrue("Simple Select One To One test failed", comparer.compareObjects(result, expectedResult));
1761
2044
        } finally {
1762
        Assert.assertTrue("Simple Select One To One test failed", comparer.compareObjects(result, expectedResult));
2045
            rollbackTransaction(em);
1763
2046
            closeEntityManager(em);
2047
        }
1764
    }
2048
    }
1765
2049
1766
    public void selectPhonenumberDeclaredInINClauseTest() {
2050
    public void selectPhonenumberDeclaredInINClauseTest() {
Lines 1785-1797 Link Here
1785
        CriteriaQuery<PhoneNumber> cq = qb.createQuery(PhoneNumber.class);
2069
        CriteriaQuery<PhoneNumber> cq = qb.createQuery(PhoneNumber.class);
1786
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
2070
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1787
        Join phone = root.join(Employee_.phoneNumbers);
2071
        Join phone = root.join(Employee_.phoneNumbers);
2072
        cq.select(phone);
1788
        cq.where(qb.isNotNull(phone.get(PhoneNumber_.number)));
2073
        cq.where(qb.isNotNull(phone.get(PhoneNumber_.number)));
1789
        cq.orderBy(qb.asc(phone.get(PhoneNumber_.number)), qb.asc(phone.get(PhoneNumber_.areaCode)));
2074
        cq.orderBy(qb.asc(phone.get(PhoneNumber_.number)), qb.asc(phone.get(PhoneNumber_.areaCode)));
2075
        beginTransaction(em);
2076
        try {
2077
            List result = em.createQuery(cq).getResultList();
1790
2078
1791
        List result = em.createQuery(cq).getResultList();
2079
            Assert.assertTrue("Simple select Phonenumber Declared In IN Clause test failed", comparer.compareObjects(result, expectedResult));
1792
2080
        } finally {
1793
        Assert.assertTrue("Simple select Phonenumber Declared In IN Clause test failed", comparer.compareObjects(result, expectedResult));
2081
            rollbackTransaction(em);
1794
2082
            closeEntityManager(em);
2083
        }
1795
    }
2084
    }
1796
2085
1797
    /**
2086
    /**
Lines 1834-1844 Link Here
1834
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
2123
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1835
        Join phone = root.join("phoneNumbers");
2124
        Join phone = root.join("phoneNumbers");
1836
        cq.where(qb.equal(root.get("number"), qb.all(sq)));
2125
        cq.where(qb.equal(root.get("number"), qb.all(sq)));
2126
        beginTransaction(em);
2127
        try {
2128
            List result = em.createQuery(cq).getResultList();
1837
2129
1838
        List result = em.createQuery(cq).getResultList();
2130
            Assert.assertTrue("Simple select Phonenumber Declared In IN Clause test failed", comparer.compareObjects(result, expectedResult));
1839
2131
        } finally {
1840
        Assert.assertTrue("Simple select Phonenumber Declared In IN Clause test failed", comparer.compareObjects(result, expectedResult));
2132
            rollbackTransaction(em);
1841
2133
            closeEntityManager(em);
2134
        }
1842
    }*/
2135
    }*/
1843
2136
1844
    /**
2137
    /**
Lines 1864-1886 Link Here
1864
        clearCache();
2157
        clearCache();
1865
2158
1866
        //"Select Distinct Object(emp) from Employee emp, IN(emp.phoneNumbers) p WHERE p.number = ALL (Select MIN(pp.number) FROM PhoneNumber pp)";
2159
        //"Select Distinct Object(emp) from Employee emp, IN(emp.phoneNumbers) p WHERE p.number = ALL (Select MIN(pp.number) FROM PhoneNumber pp)";
1867
        CriteriaBuilder qb = em.getCriteriaBuilder();
2160
        beginTransaction(em);
1868
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
2161
        try {
1869
        cq.distinct(true);
2162
            CriteriaBuilder qb = em.getCriteriaBuilder();
1870
        Subquery<Number> sq = cq.subquery(Number.class);
2163
            CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1871
        Root<PhoneNumber> subroot = sq.from(PhoneNumber.class);
2164
            cq.distinct(true);
1872
        sq.select(qb.min(subroot.<Number>get("number")));//number is a string? not sure this will work.
2165
            Subquery<Number> sq = cq.subquery(Number.class);
2166
            Root<PhoneNumber> subroot = sq.from(PhoneNumber.class);
2167
            sq.select(qb.min(subroot.<Number>get("number")));//number is a string? not sure this will work.
1873
        
2168
        
1874
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
2169
            Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1875
        Join phone = root.join(Employee_.phoneNumbers);
2170
            Join phone = root.join(Employee_.phoneNumbers);
1876
        cq.where(qb.equal(phone.get(PhoneNumber_.number), qb.all(sq)));
2171
            cq.where(qb.equal(phone.get(PhoneNumber_.number), qb.all(sq)));
1877
2172
1878
        Query jpqlQuery = em.createQuery(cq);
2173
            Query jpqlQuery = em.createQuery(cq);
1879
        jpqlQuery.setMaxResults(10);
1880
        List result = jpqlQuery.getResultList();
1881
2174
1882
        Assert.assertTrue("Simple select Phonenumber Declared In IN Clause test failed", comparer.compareObjects(result, expectedResult));
2175
            jpqlQuery.setMaxResults(10);
1883
2176
            List result = jpqlQuery.getResultList();
2177
            Assert.assertTrue("Simple select Phonenumber Declared In IN Clause test failed", comparer.compareObjects(result, expectedResult));
2178
        } finally {
2179
            rollbackTransaction(em);
2180
            closeEntityManager(em);
2181
        }
1884
    }
2182
    }
1885
2183
1886
    public void selectSimpleMemberOfWithParameterTest() {
2184
    public void selectSimpleMemberOfWithParameterTest() {
Lines 1914-1926 Link Here
1914
        Vector parameters = new Vector();
2212
        Vector parameters = new Vector();
1915
        parameters.add(phone);
2213
        parameters.add(phone);
1916
2214
1917
        List result = em.createQuery(cq).setParameter("1", phone).getResultList();
2215
        beginTransaction(em);
2216
        try {
2217
            List result = em.createQuery(cq).setParameter("1", phone).getResultList();
2218
            Assert.assertTrue("Select simple member of with parameter test failed", comparer.compareObjects(result, expectedResult));
2219
        } finally {
2220
            rollbackTransaction(em);
2221
            closeEntityManager(em);
2222
        }
1918
2223
1919
        uow = clientSession.acquireUnitOfWork();
2224
        uow = clientSession.acquireUnitOfWork();
1920
        uow.deleteObject(phone);
2225
        uow.deleteObject(phone);
1921
        uow.commit();
2226
        uow.commit();
1922
1923
        Assert.assertTrue("Select simple member of with parameter test failed", comparer.compareObjects(result, expectedResult));
1924
    }
2227
    }
1925
2228
1926
    public void selectSimpleNotMemberOfWithParameterTest() {
2229
    public void selectSimpleNotMemberOfWithParameterTest() {
Lines 1953-1970 Link Here
1953
        CriteriaBuilder qb = em.getCriteriaBuilder();
2256
        CriteriaBuilder qb = em.getCriteriaBuilder();
1954
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
2257
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1955
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
2258
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1956
        cq.where(qb.isNotMember(qb.parameter(PhoneNumber.class), root.get(Employee_.phoneNumbers)));
2259
        cq.where(qb.isNotMember(qb.parameter(PhoneNumber.class, "1"), root.get(Employee_.phoneNumbers)));
1957
2260
1958
        Vector parameters = new Vector();
2261
        Vector parameters = new Vector();
1959
        parameters.add(phone);
2262
        parameters.add(phone);
1960
2263
1961
        List result = em.createQuery(cq).setParameter("1", phone).getResultList();
2264
        beginTransaction(em);
2265
        try {
2266
            List result = em.createQuery(cq).setParameter("1", phone).getResultList();
1962
2267
2268
            Assert.assertTrue("Select simple Not member of with parameter test failed", comparer.compareObjects(result, expectedResult));
2269
        } finally {
2270
            rollbackTransaction(em);
2271
            closeEntityManager(em);
2272
        }
2273
1963
        uow = clientSession.acquireUnitOfWork();
2274
        uow = clientSession.acquireUnitOfWork();
1964
        uow.deleteObject(phone);
2275
        uow.deleteObject(phone);
1965
        uow.commit();
2276
        uow.commit();
1966
1967
        Assert.assertTrue("Select simple Not member of with parameter test failed", comparer.compareObjects(result, expectedResult));
1968
    }
2277
    }
1969
2278
1970
    public void selectSimpleBetweenWithParameterTest() {
2279
    public void selectSimpleBetweenWithParameterTest() {
Lines 1991-2000 Link Here
1991
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
2300
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
1992
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
2301
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
1993
        cq.where(qb.between(root.get(Employee_.id).as(Comparable.class), qb.parameter(BigDecimal.class, "1"), qb.parameter(Integer.class, "2")));
2302
        cq.where(qb.between(root.get(Employee_.id).as(Comparable.class), qb.parameter(BigDecimal.class, "1"), qb.parameter(Integer.class, "2")));
2303
        beginTransaction(em);
2304
        try {
2305
            List result = em.createQuery(cq).setParameter("1", empId1).setParameter("2", emp2.getId()).getResultList();
1994
2306
1995
        List result = em.createQuery(cq).setParameter("1", empId1).setParameter("2", emp2.getId()).getResultList();
2307
            Assert.assertTrue("Simple select between with parameter test failed", comparer.compareObjects(result, expectedResult));
1996
2308
        } finally {
1997
        Assert.assertTrue("Simple select between with parameter test failed", comparer.compareObjects(result, expectedResult));
2309
            rollbackTransaction(em);
2310
            closeEntityManager(em);
2311
        }
1998
    }
2312
    }
1999
2313
2000
    public void selectSimpleInWithParameterTest() {
2314
    public void selectSimpleInWithParameterTest() {
Lines 2028-2037 Link Here
2028
        inExp.value(qb.parameter(BigDecimal.class, "1"));
2342
        inExp.value(qb.parameter(BigDecimal.class, "1"));
2029
        inExp.value(qb.parameter(Integer.class, "2"));
2343
        inExp.value(qb.parameter(Integer.class, "2"));
2030
        cq.where(inExp);
2344
        cq.where(inExp);
2345
        beginTransaction(em);
2346
        try {
2347
            List result = em.createQuery(cq).setParameter("1", empId1).setParameter("2", emp2.getId()).getResultList();
2031
2348
2032
        List result = em.createQuery(cq).setParameter("1", empId1).setParameter("2", emp2.getId()).getResultList();
2349
            Assert.assertTrue("Simple select between with parameter test failed", comparer.compareObjects(result, expectedResult));
2033
2350
        } finally {
2034
        Assert.assertTrue("Simple select between with parameter test failed", comparer.compareObjects(result, expectedResult));
2351
            rollbackTransaction(em);
2352
            closeEntityManager(em);
2353
        }
2035
    }
2354
    }
2036
2355
2037
    //Test case for ABS function in EJBQL
2356
    //Test case for ABS function in EJBQL
Lines 2045-2051 Link Here
2045
        CriteriaBuilder qb = em.getCriteriaBuilder();
2364
        CriteriaBuilder qb = em.getCriteriaBuilder();
2046
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
2365
        CriteriaQuery<Employee> cq = qb.createQuery(Employee.class);
2047
        cq.where(qb.equal(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.status), org.eclipse.persistence.testing.models.jpa.advanced.Employee.EmployeeStatus.FULL_TIME));
2366
        cq.where(qb.equal(cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class)).get(Employee_.status), org.eclipse.persistence.testing.models.jpa.advanced.Employee.EmployeeStatus.FULL_TIME));
2048
        List result = em.createQuery(cq).getResultList();
2367
        beginTransaction(em);
2368
        try {
2369
            List result = em.createQuery(cq).getResultList();
2370
        } finally {
2371
            rollbackTransaction(em);
2372
            closeEntityManager(em);
2373
        }
2049
    }
2374
    }
2050
2375
2051
    public void simpleTypeTest(){
2376
    public void simpleTypeTest(){
Lines 2059-2069 Link Here
2059
        CriteriaBuilder qb = em.getCriteriaBuilder();
2384
        CriteriaBuilder qb = em.getCriteriaBuilder();
2060
        CriteriaQuery<Project> cq = qb.createQuery(Project.class);
2385
        CriteriaQuery<Project> cq = qb.createQuery(Project.class);
2061
        cq.where(qb.equal(cq.from(getEntityManagerFactory().getMetamodel().entity(Project.class)).type(), org.eclipse.persistence.testing.models.jpa.advanced.LargeProject.class));
2386
        cq.where(qb.equal(cq.from(getEntityManagerFactory().getMetamodel().entity(Project.class)).type(), org.eclipse.persistence.testing.models.jpa.advanced.LargeProject.class));
2387
        beginTransaction(em);
2388
        try {
2389
            List result = em.createQuery(cq).getResultList();
2062
2390
2063
        List result = em.createQuery(cq).getResultList();
2391
            Assert.assertTrue("SimpleTypeTest", comparer.compareObjects(result, expectedResult));
2064
2392
        } finally {
2065
        Assert.assertTrue("SimpleTypeTest", comparer.compareObjects(result, expectedResult));
2393
            rollbackTransaction(em);
2066
2394
            closeEntityManager(em);
2395
        }
2067
    }
2396
    }
2068
    
2397
    
2069
    public void simpleAsOrderByTest(){
2398
    public void simpleAsOrderByTest(){
Lines 2086-2095 Link Here
2086
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
2415
        Root<Employee> root = cq.from(getEntityManagerFactory().getMetamodel().entity(Employee.class));
2087
        cq.select(root.get(Employee_.firstName));
2416
        cq.select(root.get(Employee_.firstName));
2088
        cq.orderBy(qb.asc(root.get(Employee_.firstName)));
2417
        cq.orderBy(qb.asc(root.get(Employee_.firstName)));
2418
        beginTransaction(em);
2419
        try {
2420
            List result = em.createQuery(cq).getResultList();
2089
2421
2090
        List result = em.createQuery(cq).getResultList();
2422
            Assert.assertTrue("SimpleTypeTest", comparer.compareObjects(result, expectedResult));
2091
2423
        } finally {
2092
        Assert.assertTrue("SimpleTypeTest", comparer.compareObjects(result, expectedResult));
2424
            rollbackTransaction(em);
2425
            closeEntityManager(em);
2426
        }
2093
    }
2427
    }
2094
}
2428
}
2095
2429
(-)jpa/eclipselink.jpa.test/build.xml (-2 / +21 lines)
Lines 330-335 Link Here
330
            <exclude name="org/eclipse/persistence/testing/models/jpa/advanced/**"/>
330
            <exclude name="org/eclipse/persistence/testing/models/jpa/advanced/**"/>
331
            <exclude name="org/eclipse/persistence/testing/tests/jpa/FullRegressionTestSuite.java"/>
331
            <exclude name="org/eclipse/persistence/testing/tests/jpa/FullRegressionTestSuite.java"/>
332
            <exclude name="org/eclipse/persistence/testing/tests/jpa/AllCMP3TestRunModel.java"/>
332
            <exclude name="org/eclipse/persistence/testing/tests/jpa/AllCMP3TestRunModel.java"/>
333
            <exclude name="org/eclipse/persistence/testing/tests/jpa/criteria/CriteriaServerTestSuite.java"/>
333
            <classpath>
334
            <classpath>
334
                <path refid="compile.path"/>
335
                <path refid="compile.path"/>
335
            </classpath>
336
            </classpath>
Lines 348-353 Link Here
348
               failonerror="true">
349
               failonerror="true">
349
            <include name="org/eclipse/persistence/testing/tests/jpa/FullRegressionTestSuite.java"/>
350
            <include name="org/eclipse/persistence/testing/tests/jpa/FullRegressionTestSuite.java"/>
350
            <include name="org/eclipse/persistence/testing/tests/jpa/AllCMP3TestRunModel.java"/>
351
            <include name="org/eclipse/persistence/testing/tests/jpa/AllCMP3TestRunModel.java"/>
352
            <include name="org/eclipse/persistence/testing/tests/jpa/criteria/CriteriaServerTestSuite.java"/>
351
            <classpath>
353
            <classpath>
352
                <path refid="compile.path"/>
354
                <path refid="compile.path"/>
353
            </classpath>
355
            </classpath>
Lines 1375-1381 Link Here
1375
            target="${javac.version}"
1377
            target="${javac.version}"
1376
            deprecation="${javac.deprecation}"
1378
            deprecation="${javac.deprecation}"
1377
            failonerror="true"
1379
            failonerror="true"
1378
            includes="${TEST_DIR}/**/*.java">
1380
            includes="${TEST_DIR}/**/*.java"
1381
			excludes="org/eclipse/persistence/testing/tests/jpa/criteria/CriteriaServerTestSuite.java">
1379
            <classpath refid="compile.server.path"/>
1382
            <classpath refid="compile.server.path"/>
1380
        </javac>
1383
        </javac>
1381
        <javac
1384
        <javac
Lines 1432-1438 Link Here
1432
            target="${javac.version}"
1435
            target="${javac.version}"
1433
            deprecation="${javac.deprecation}"
1436
            deprecation="${javac.deprecation}"
1434
            failonerror="true"
1437
            failonerror="true"
1435
            includes="${TEST_DIR}/**/*.java">
1438
            includes="${TEST_DIR}/**/*.java"
1439
			excludes="org/eclipse/persistence/testing/tests/jpa/criteria/CriteriaServerTestSuite.java">
1436
            <classpath refid="compile.server.path"/>
1440
            <classpath refid="compile.server.path"/>
1437
        </javac>
1441
        </javac>
1438
        <javac
1442
        <javac
Lines 1540-1551 Link Here
1540
            <include name="*.xml"/>
1544
            <include name="*.xml"/>
1541
        </replace>
1545
        </replace>
1542
1546
1547
        <!-- Copy the canonical metamodel and criteria api test -->
1548
        <antcall target="copy_criteria_api_canonical_model" inheritRefs="true"/>
1543
        <!-- Create ejb jar. -->
1549
        <!-- Create ejb jar. -->
1544
        <jar destfile="${eclipselink.jpa.test}/${build.dir}/${MODEL_NAME}_ejb.jar" basedir="stage"/>
1550
        <jar destfile="${eclipselink.jpa.test}/${build.dir}/${MODEL_NAME}_ejb.jar" basedir="stage"/>
1545
        <antcall target="create-ejb-stubs" inheritRefs="true"/>
1551
        <antcall target="create-ejb-stubs" inheritRefs="true"/>
1546
        <delete dir="stage"/>
1552
        <delete dir="stage"/>
1547
    </target>
1553
    </target>
1548
1554
1555
    <target name="copy_criteria_api_canonical_model" if="is.criteria.server.test">
1556
        <!-- Coping the CriteriaServerTestSuite class -->
1557
        <antcall target="compile"/>
1558
        <copy todir="${eclipselink.jpa.test}/stage">
1559
            <fileset dir="${eclipselink.jpa.test}/classes">
1560
                <include name="org/eclipse/persistence/testing/tests/jpa/criteria/CriteriaServerTestSuite.class"/>
1561
                <include name="org/eclipse/persistence/testing/tests/jpa/criteria/metamodel/JUnitCriteriaSimpleTestSuite.class"/>
1562
                <include name="org/eclipse/persistence/testing/models/jpa/advanced/*.class"/>
1563
            </fileset>
1564
        </copy>
1565
    </target>
1566
1549
    <target name="create-ejb-stubs" depends="detect-os" if="is.websphere">
1567
    <target name="create-ejb-stubs" depends="detect-os" if="is.websphere">
1550
        <exec executable="${was.home}/bin/createEJBStubs.${suffix}">
1568
        <exec executable="${was.home}/bin/createEJBStubs.${suffix}">
1551
            <arg line="${eclipselink.jpa.test}/${build.dir}/${MODEL_NAME}_ejb.jar"/>
1569
            <arg line="${eclipselink.jpa.test}/${build.dir}/${MODEL_NAME}_ejb.jar"/>
Lines 1741-1746 Link Here
1741
    </target>
1759
    </target>
1742
1760
1743
    <target name="server-test-criteria">
1761
    <target name="server-test-criteria">
1762
        <property name="is.criteria.server.test" value="true"/>
1744
        <antcall target="server-run-all" inheritRefs="true">
1763
        <antcall target="server-run-all" inheritRefs="true">
1745
            <param name="PERSISTENCE_UNIT_NAME" value="default"/>
1764
            <param name="PERSISTENCE_UNIT_NAME" value="default"/>
1746
            <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/advanced"/>
1765
            <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/advanced"/>
(-)jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/criteria/CriteriaServerTestSuite.java (-3 / +4 lines)
Lines 23-33 Link Here
23
    public static Test suite() {
23
    public static Test suite() {
24
        TestSuite suite = new TestSuite();
24
        TestSuite suite = new TestSuite();
25
        suite.setName("Criteria ServerTestSuite");
25
        suite.setName("Criteria ServerTestSuite");
26
    //    suite.addTest(AdvancedCompositePKJunitTest.suite());
26
        suite.addTest(AdvancedCompositePKJunitTest.suite());
27
        suite.addTest(AdvancedCriteriaQueryTestSuite.suite());
27
        suite.addTest(AdvancedCriteriaQueryTestSuite.suite());
28
    //    suite.addTest(AdvancedQueryTestSuite.suite());
28
        suite.addTest(AdvancedQueryTestSuite.suite());
29
    //    suite.addTest(JUnitCriteriaSimpleTestSuite.suite());
29
        suite.addTest(JUnitCriteriaSimpleTestSuite.suite());
30
        suite.addTest(JUnitCriteriaUnitTestSuite.suite());
30
        suite.addTest(JUnitCriteriaUnitTestSuite.suite());
31
        suite.addTest(org.eclipse.persistence.testing.tests.jpa.criteria.metamodel.JUnitCriteriaSimpleTestSuite.suite());  
31
        
32
        
32
        return suite;
33
        return suite;
33
    }
34
    }
(-)jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/criteria/JUnitCriteriaSimpleTestSuite.java (-3 / +3 lines)
Lines 1014-1021 Link Here
1014
1014
1015
    public void simpleLikeEscapeTestWithParameter() {
1015
    public void simpleLikeEscapeTestWithParameter() {
1016
        EntityManager em = createEntityManager();
1016
        EntityManager em = createEntityManager();
1017
        beginTransaction(em);
1017
1018
        try {
1019
            Address expectedResult = new Address();
1018
            Address expectedResult = new Address();
1020
            expectedResult.setCity("TAIYUAN");
1019
            expectedResult.setCity("TAIYUAN");
1021
            expectedResult.setCountry("CHINA");
1020
            expectedResult.setCountry("CHINA");
Lines 1046-1052 Link Here
1046
                patternString = "234 RUBY \\_Way";
1045
                patternString = "234 RUBY \\_Way";
1047
                escChar = new Character('\\');
1046
                escChar = new Character('\\');
1048
            }
1047
            }
1049
1048
        beginTransaction(em);
1049
        try {
1050
            List result = em.createQuery(cq).setParameter("pattern", patternString).setParameter("esc", escChar).getResultList();
1050
            List result = em.createQuery(cq).setParameter("pattern", patternString).setParameter("esc", escChar).getResultList();
1051
1051
1052
            Assert.assertTrue("Simple Escape Underscore test failed", comparer.compareObjects(result, expectedResult));
1052
            Assert.assertTrue("Simple Escape Underscore test failed", comparer.compareObjects(result, expectedResult));
(-)jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/FullRegressionTestSuite.java (-1 / +1 lines)
Lines 210-216 Link Here
210
        suite.addTest(org.eclipse.persistence.testing.tests.jpa.criteria.AdvancedCriteriaQueryTestSuite.suite());
210
        suite.addTest(org.eclipse.persistence.testing.tests.jpa.criteria.AdvancedCriteriaQueryTestSuite.suite());
211
        suite.addTest(org.eclipse.persistence.testing.tests.jpa.criteria.AdvancedQueryTestSuite.suite());
211
        suite.addTest(org.eclipse.persistence.testing.tests.jpa.criteria.AdvancedQueryTestSuite.suite());
212
        suite.addTest(org.eclipse.persistence.testing.tests.jpa.criteria.JUnitCriteriaSimpleTestSuite.suite());
212
        suite.addTest(org.eclipse.persistence.testing.tests.jpa.criteria.JUnitCriteriaSimpleTestSuite.suite());
213
        //suite.addTest(org.eclipse.persistence.testing.tests.jpa.criteria.metamodel.JUnitCriteriaSimpleTestSuite.suite());  
213
        suite.addTest(org.eclipse.persistence.testing.tests.jpa.criteria.metamodel.JUnitCriteriaSimpleTestSuite.suite());  
214
        fullSuite.addTest(suite);
214
        fullSuite.addTest(suite);
215
        
215
        
216
        // JPA 2.0 Cacheable model
216
        // JPA 2.0 Cacheable model

Return to bug 293708