From 845cad104e830095beff20ab747b0c50dd287aff Mon Sep 17 00:00:00 2001 From: egmp777 Date: Wed, 30 Apr 2014 12:58:51 -0500 Subject: [PATCH] All JPA Sorting Tests --- .../service/FooServiceSortingTests.java | 240 +++++++++++++----- 1 file changed, 181 insertions(+), 59 deletions(-) diff --git a/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServiceSortingTests.java b/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServiceSortingTests.java index 32c5fd3789..d7af8f4dda 100644 --- a/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServiceSortingTests.java +++ b/spring-jpa/src/test/java/org/baeldung/persistence/service/FooServiceSortingTests.java @@ -7,94 +7,216 @@ import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; +import javax.persistence.OrderBy; import javax.persistence.Persistence; import javax.persistence.Query; +import javax.persistence.TypedQuery; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Order; +import javax.persistence.criteria.Root; import org.hibernate.Session; import org.hibernate.SessionFactory; +import org.hibernate.annotations.common.util.StringHelper; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import com.cc.jpa.example.Foo; +import com.cc.jpa.example.Bar; + + public class FooServiceSortingTests { -private EntityManager entityManager; - + private EntityManager entityManager; + @BeforeClass public static void before(){ - - + + } + + @After + public final void after() { + } - @After - public final void after() { - - } - - @Test - public final void whenSortingByOneAttributeDefault_thenSortedResult() { - - Query sortQuery = entityManager.createQuery - ("Select f from Foo as f order by f.id"); - List fooList = sortQuery.getResultList(); - for(Foo foo:fooList){ - System.out.println("Name:"+foo.getName()+"-------Id:"+foo.getId()); - } - - } - @Test - public final void whenSortingByOneAttribute_thenSortedResult() { - + public final void whenSortingByOneAttributeDefaultOrder_thenPrintSortedResult() { + + EntityManagerFactory emf = Persistence + .createEntityManagerFactory("punit"); + EntityManager entityManager = emf.createEntityManager(); + EntityTransaction entityTransaction = entityManager + .getTransaction(); + entityTransaction.begin(); + String jql = "Select f from Foo as f order by f.id"; Query sortQuery = entityManager.createQuery - ("Select f from Foo as f order by f.id desc"); + (jql); + List fooList = sortQuery.getResultList(); + assertEquals(1,fooList.get(0).getId()); + assertEquals(100,fooList.get(fooList.toArray().length-1).getId()); + for(Foo foo:fooList){ + System.out.println("Name:"+foo.getName()+"-------Id:"+foo.getId()); + } + + } + + @Test + public final void whenSortingByOneAttributeSetOrder_thenSortedPrintResult() { + + EntityManagerFactory emf = Persistence + .createEntityManagerFactory("punit"); + EntityManager entityManager = emf.createEntityManager(); + EntityTransaction entityTransaction = entityManager + .getTransaction(); + entityTransaction.begin(); + String jql = "Select f from Foo as f order by f.id desc"; + Query sortQuery = entityManager.createQuery + (jql); + List fooList = sortQuery.getResultList(); + assertEquals(100,fooList.get(0).getId()); + assertEquals(1,fooList.get(fooList.toArray().length-1).getId()); + for(Foo foo:fooList){ + System.out.println("Name:"+foo.getName()+"-------Id:"+foo.getId()); + } + + } + + @Test + public final void whenSortingByTwoAttributes_thenPrintSortedResult() { + + EntityManagerFactory emf = Persistence + .createEntityManagerFactory("punit"); + EntityManager entityManager = emf.createEntityManager(); + EntityTransaction entityTransaction = entityManager + .getTransaction(); + entityTransaction.begin(); + String jql = "Select f from Foo as f order by f.name asc, f.id desc"; + Query sortQuery = entityManager.createQuery + (jql); List fooList = sortQuery.getResultList(); for(Foo foo:fooList){ System.out.println("Name:"+foo.getName()+"-------Id:"+foo.getId()); } + + } + + @Test + public final void whenSortinfBar_thenPrintBarsSortedWithFoos(){ + EntityManagerFactory emf = Persistence + .createEntityManagerFactory("punit"); + EntityManager entityManager = emf.createEntityManager(); + EntityTransaction entityTransaction = entityManager + .getTransaction(); + entityTransaction.begin(); + String jql = "Select b from Bar as b order by b.id"; + + Query barQuery = entityManager.createQuery(jql); + ListbarList = barQuery.getResultList(); + for(Bar bar:barList){ + System.out.println("Bar Id:"+bar.getId()); + for(Foo foo:bar.getFooList()){ + System.out.println("FooName:"+foo.getName()); + } + } + + } + + @Test + public final void whenSortingByStringNullLast_thenLastNull() { + + EntityManagerFactory emf = Persistence + .createEntityManagerFactory("punit"); + EntityManager entityManager = emf.createEntityManager(); + EntityTransaction entityTransaction = entityManager + .getTransaction(); + entityTransaction.begin(); + String jql = "Select f from Foo as f order by f.name desc NULLS LAST"; + Query sortQuery = entityManager.createQuery + (jql); + List fooList = sortQuery.getResultList(); + assertNull(fooList.get(fooList.toArray().length-1).getName()); + for(Foo foo:fooList){ + System.out.println("Name:"+foo.getName()); + } + } + @Test + public final void whenSortingByStringNullFirst_thenFirstNull() { + + EntityManagerFactory emf = Persistence + .createEntityManagerFactory("punit"); + EntityManager entityManager = emf.createEntityManager(); + EntityTransaction entityTransaction = entityManager + .getTransaction(); + entityTransaction.begin(); + String jql = "Select f from Foo as f order by f.name desc NULLS FIRST"; + Query sortQuery = entityManager.createQuery + (jql); + List fooList = sortQuery.getResultList(); + assertNull(fooList.get(0).getName()); + for(Foo foo:fooList){ + System.out.println("Name:"+foo.getName()+"-------Id:"+foo.getTest_Null()); + } + } + @Test + public final void whenSortingByIntNull_thenException() { + + EntityManagerFactory emf = Persistence + .createEntityManagerFactory("punit"); + EntityManager entityManager = emf.createEntityManager(); + EntityTransaction entityTransaction = entityManager + .getTransaction(); + entityTransaction.begin(); + String jql = "Select f from Foo as f order by f.test_Null desc NULLS FIRST"; + Query sortQuery = entityManager.createQuery + (jql); + boolean thrown = false; + try { + List fooList = sortQuery.getResultList(); + } catch (javax.persistence.PersistenceException e) { + thrown = true; + } + assertTrue(thrown); + } + + @Test + public final void whenSortingFooWithCriteria_thenPrintSortedFoos(){ + + EntityManagerFactory emf = Persistence + .createEntityManagerFactory("punit"); + EntityManager entityManager = emf.createEntityManager(); + CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); + CriteriaQuery criteriaQuery = criteriaBuilder + .createQuery(Foo.class); + Root from = criteriaQuery.from(Foo.class); + CriteriaQuery select = criteriaQuery.select(from); + criteriaQuery.orderBy(criteriaBuilder.asc(from.get("name"))); + TypedQuery typedQuery = entityManager.createQuery(select); + ListfooList = typedQuery.getResultList(); + for(Foo foo:fooList){ + System.out.println("Name:"+foo.getName()+"--------Id:"+foo.getId()); + } } @Test - public final void whenSortingByTwoAttributes_thenSortedResult() { + public final void whenSortingFooWithCriteriaAndMultipleAttributes_thenPrintSortedFoos(){ - Query sortQuery = entityManager.createQuery - ("Select f from Foo as f order by f.name asc, f.id desc"); - List fooList = sortQuery.getResultList(); + EntityManagerFactory emf = Persistence + .createEntityManagerFactory("punit"); + EntityManager entityManager = emf.createEntityManager(); + CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); + CriteriaQuery criteriaQuery = criteriaBuilder + .createQuery(Foo.class); + Root from = criteriaQuery.from(Foo.class); + CriteriaQuery select = criteriaQuery.select(from); + criteriaQuery.orderBy(criteriaBuilder.asc(from.get("name")), criteriaBuilder.desc(from.get("id"))); + TypedQuery typedQuery = entityManager.createQuery(select); + ListfooList = typedQuery.getResultList(); for(Foo foo:fooList){ System.out.println("Name:"+foo.getName()+"-------Id:"+foo.getId()); } - } - - @Test - public final void whenSortingFooWithCriteria_thenSortedFoos(){ - - Root from = criteriaQuery.from(Foo.class); - CriteriaQuery select = criteriaQuery.select(from); - criteriaQuery.orderBy(criteriaBuilder.asc(from.get("name"))); - TypedQuery typedQuery = entityManager.createQuery(select); - ListfooList = typedQuery.getResultList(); - for(Foo foo:fooList){ - System.out.println("Name:"+foo.getName()+"--------Id:"+foo.getId()); - } - - } - - @Test - public final void whenSortingFooWithCriteriaAndMultipleAttributes_thenSortedFoos(){ - - Root from = criteriaQuery.from(Foo.class); - CriteriaQuery select = criteriaQuery.select(from); - criteriaQuery.orderBy(criteriaBuilder.asc(from.get("name")), criteriaBuilder.desc(from.get("id"))); - TypedQuery typedQuery = entityManager.createQuery(select); - ListfooList = typedQuery.getResultList(); - for(Foo foo:fooList){ - System.out.println("Name:"+foo.getName()+"-------Id:"+foo.getId()); - } - } - - - + }