package org.raidenjpa.query.limit; import static org.junit.Assert.assertEquals; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; import org.junit.Test; import org.raidenjpa.AbstractTestCase; import org.raidenjpa.entities.A; import org.raidenjpa.util.EntityManagerUtil; import org.raidenjpa.util.QueryHelper; public class LimitTest extends AbstractTestCase { @Test public void testLimit() { createThreeAs(); QueryHelper query; query = new QueryHelper("SELECT a FROM A a"); query.setMaxResult(5); assertEquals(3, query.getResultList().size()); query.setMaxResult(2); assertEquals(2, query.getResultList().size()); query = new QueryHelper("SELECT a FROM A a WHERE a.stringValue = :stringValue"); query.parameter("stringValue", "a1"); query.setMaxResult(5); assertEquals(2, query.getResultList().size()); query.parameter("stringValue", "a1"); query.setMaxResult(1); assertEquals(1, query.getResultList().size()); } @Test public void testLimitWithStartPosition() { createThreeAs(); QueryHelper query; query = new QueryHelper("SELECT a FROM A a"); query.setMaxResult(5).setFirstResult(1); assertEquals(2, query.getResultList().size()); query.setMaxResult(2).setFirstResult(1); assertEquals(2, query.getResultList().size()); query = new QueryHelper("SELECT a FROM A a WHERE a.stringValue = :stringValue"); query.parameter("stringValue", "a1"); query.setMaxResult(5).setFirstResult(3); assertEquals(0, query.getResultList().size()); query.parameter("stringValue", "a1"); query.setMaxResult(1).setFirstResult(3); assertEquals(0, query.getResultList().size()); } @Test public void testStartPosition() { createThreeAs(); QueryHelper query; query = new QueryHelper("SELECT a FROM A a"); query.setFirstResult(1); assertEquals(2, query.getResultList().size()); query = new QueryHelper("SELECT a FROM A a WHERE a.stringValue = :stringValue"); query.parameter("stringValue", "a1"); query.setFirstResult(3); assertEquals(0, query.getResultList().size()); } private void createThreeAs() { EntityManager em = EntityManagerUtil.em(); EntityTransaction tx = em.getTransaction(); tx.begin(); em.merge(new A("a1", 1)); em.merge(new A("a1", 1)); em.merge(new A("a2", 2)); tx.commit(); } }