package org.raidenjpa.query.where; import static org.junit.Assert.assertEquals; import java.util.List; import org.junit.Test; import org.raidenjpa.AbstractTestCase; import org.raidenjpa.util.QueryHelper; public class SubQueryTest extends AbstractTestCase { @Test public void testInOperatorWithSubselect() { createA("a1", 1); createA("a1", 2); createA("a1", 3); createA("a2", 4); createA("a2", 5); String jpql; QueryHelper query; List<?> result; jpql = "SELECT a FROM A a"; jpql += " WHERE a.id IN (SELECT a.id FROM A a WHERE a.stringValue = :stringValue)"; query = new QueryHelper(jpql); query.parameter("stringValue", "a2"); result = query.getResultList(); assertEquals(2, result.size()); jpql = "SELECT a FROM A a"; jpql += " WHERE a.intValue IN (SELECT a.intValue FROM A a WHERE a.stringValue = :stringValue)"; query = new QueryHelper(jpql); query.parameter("stringValue", "a2"); result = query.getResultList(); assertEquals(2, result.size()); jpql = "SELECT a FROM A a"; jpql += " WHERE a.intValue IN (SELECT a.intValue FROM A a)"; query = new QueryHelper(jpql); result = query.getResultList(); assertEquals(5, result.size()); } }