@Test public void Case2() { assertEquals(ImmutableList.of(4, 4, 4, 4, 4, 4), query().from(cat) .list(Expressions.cases().when(cat.toes.eq(2)).then(cat.id.multiply(2)) .when(cat.toes.eq(3)).then(cat.id.multiply(3)) .otherwise(4))); }
public Cases<A,Q> then(A constant) { return then(ConstantImpl.create(constant)); }
public CaseWhen<A,Q> when(BooleanExpression b) { return new CaseWhen<A,Q>(this, b); }
public CaseWhen<A,Q> when(Predicate b) { return new CaseWhen<A,Q>(this, b); }
@Test public void CaseBuilder() { QCat cat2 = new QCat("cat2"); NumberExpression<Integer> casex = new CaseBuilder() .when(cat.weight.isNull().and(cat.weight.isNull())).then(0) .when(cat.weight.isNull()).then(cat2.weight) .when(cat2.weight.isNull()).then(cat.weight) .otherwise(cat.weight.add(cat2.weight)); query().from(cat, cat2).orderBy(casex.asc()).list(cat.id, cat2.id); query().from(cat, cat2).orderBy(casex.desc()).list(cat.id, cat2.id); }
@Test public void Case2() { QCat cat = QCat.cat; JPQLSerializer serializer = new JPQLSerializer(JPQLTemplates.DEFAULT); Expression<?> expr = Expressions.cases().when(cat.toes.eq(2)).then(cat.id.multiply(2)) .when(cat.toes.eq(3)).then(cat.id.multiply(3)) .otherwise(4); serializer.handle(expr); assertEquals("case when (cat.toes = ?1) then (cat.id * ?1) when (cat.toes = ?2) then (cat.id * ?2) else ?3 end", serializer.toString()); }
@Test public void Case() { QCat cat = QCat.cat; JPQLSerializer serializer = new JPQLSerializer(JPQLTemplates.DEFAULT); Expression<?> expr = Expressions.cases().when(cat.toes.eq(2)).then(2) .when(cat.toes.eq(3)).then(3) .otherwise(4); serializer.handle(expr); assertEquals("case when (cat.toes = ?1) then ?1 when (cat.toes = ?2) then ?2 else ?3 end", serializer.toString()); }
@Test public void Case2_Hibernate() { QCat cat = QCat.cat; JPQLSerializer serializer = new JPQLSerializer(HQLTemplates.DEFAULT); Expression<?> expr = Expressions.cases().when(cat.toes.eq(2)).then(cat.id.multiply(2)) .when(cat.toes.eq(3)).then(cat.id.multiply(3)) .otherwise(4); serializer.handle(expr); assertEquals("case when (cat.toes = ?1) then (cat.id * ?1) when (cat.toes = ?2) then (cat.id * ?2) else 4 end", serializer.toString()); }
@Test public void Case_Hibernate() { QCat cat = QCat.cat; JPQLSerializer serializer = new JPQLSerializer(HQLTemplates.DEFAULT); Expression<?> expr = Expressions.cases().when(cat.toes.eq(2)).then(2) .when(cat.toes.eq(3)).then(3) .otherwise(4); serializer.handle(expr); assertEquals("case when (cat.toes = ?1) then ?1 when (cat.toes = ?2) then ?2 else 4 end", serializer.toString()); }