@Test(expectedExceptions = ParsingException.class, expectedExceptionsMessageRegExp = "ISPN028515: Cannot have aggregate functions in the WHERE clause : SUM.") public void testGroupBy7() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .select(sum("age")) .having(sum("age")).gt(10) .build(); List<Object[]> list = q.list(); assertEquals(2, list.size()); assertEquals(3, list.get(0).length); assertEquals(3, list.get(1).length); assertEquals(1500d, (Double) list.get(0)[2], 0.0001d); assertEquals(45d, (Double) list.get(1)[2], 0.0001d); }
break; case GREATER: context = qb.having(sfilter.getFieldName()).gt(value); break; case GREATER_OR_EQUAL:
public void testGt() { QueryFactory qf = getQueryFactory(); // all the transactions greater than a given amount Query q = qf.from(getModelFactory().getTransactionImplClass()) .having("amount").gt(1500) .build(); List<Transaction> list = q.list(); assertEquals(1, list.size()); assertTrue(list.get(0).getAmount() > 1500); }
public void testOrderByInAggregationQueryMustAcceptRepeatedProperty() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .select(avg("age"), property("name")) .having("name").gt("A") .groupBy("name") .having(max("addresses.street")).gt("A") .orderBy(min("addresses.street")) .build(); List<Object[]> list = q.list(); assertEquals(2, list.size()); assertEquals(2, list.get(0).length); assertNull(list.get(0)[0]); assertEquals("Spider", list.get(0)[1]); assertEquals(22.0, list.get(1)[0]); assertEquals("John", list.get(1)[1]); }
public void testSampleDomainQuery29() throws Exception { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getAccountImplClass()) .having("creationDate").gt(makeDate("2013-01-04")) .build(); List<Account> list = q.list(); assertEquals(1, list.size()); assertEquals(3, list.get(0).getId()); }
public void testSampleDomainQuery10() { QueryFactory qf = getQueryFactory(); // all the transactions for a an account having amount greater than a given amount Query q = qf.from(getModelFactory().getTransactionImplClass()) .having("accountId").eq(2) .and().having("amount").gt(40) .build(); List<Transaction> list = q.list(); assertEquals(52, list.size()); assertTrue(list.get(0).getAmount() > 40); assertTrue(list.get(1).getAmount() > 40); }
public void testHavingWithSum() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getTransactionImplClass()) .select(property("accountId"), sum("amount")) .groupBy("accountId") .having(sum("amount")).gt(3324) .orderBy("accountId") .build(); List<Object[]> list = q.list(); assertEquals(1, list.size()); assertEquals(2, list.get(0)[0]); assertEquals(6370.0d, (Double) list.get(0)[1], 0.0001d); }
public void testTautology() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .having("name").gt("A").or().having("name").lte("A") .build(); List<User> list = q.list(); assertEquals(3, list.size()); }
public void testCompareLongWithInt() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .select(sum("age")) .groupBy("name") .having(sum("age")).gt(50000) .build(); List<Object[]> list = q.list(); assertEquals(0, list.size()); }
public void testContradiction() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .having("name").gt("A").and().having("name").lte("A") .build(); List<User> list = q.list(); assertTrue(list.isEmpty()); }
public void testParamWithGroupBy() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getTransactionImplClass()) .select(property("accountId"), property("date"), sum("amount")) .groupBy("accountId", "date") .having(sum("amount")).gt(param("param")) .build(); q.setParameter("param", 1801); List<Object[]> list = q.list(); assertEquals(1, list.size()); assertEquals(3, list.get(0).length); assertEquals(6225d, list.get(0)[2]); }
public void testSampleDomainQuery18() { QueryFactory qf = getQueryFactory(); // all transactions of account with id 2 which have an amount larger than 1600 or their description contains the word 'rent' Query q = qf.from(getModelFactory().getTransactionImplClass()) .orderBy("description", SortOrder.ASC) .having("accountId").eq(1) .and(qf.having("amount").gt(1600) .or().having("description").like("%rent%")).build(); List<Transaction> list = q.list(); assertEquals(2, list.size()); assertEquals("Birthday present", list.get(0).getDescription()); assertEquals("Feb. rent payment", list.get(1).getDescription()); }
public void testCompareDoubleWithInt() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getTransactionImplClass()) .select(sum("amount")) .groupBy("accountId") .having(sum("amount")).gt(50000) .build(); List<Object[]> list = q.list(); assertEquals(0, list.size()); }
Query query = qf.from(User.class).having("name").eq("user1").and().having("age").gt(20).build();