use of com.querydsl.core.Tuple in project querydsl by querydsl.
the class SQLSerializerTest method withRecursive.
@SuppressWarnings("unchecked")
@Test
public void withRecursive() {
/*with sub (id, firstname, superior_id) as (
select id, firstname, superior_id from employee where firstname like 'Mike'
union all
select employee.id, employee.firstname, employee.superior_id from sub, employee
where employee.superior_id = sub.id)
select * from sub;*/
QEmployee e = QEmployee.employee;
PathBuilder<Tuple> sub = new PathBuilder<Tuple>(Tuple.class, "sub");
SQLQuery<?> query = new SQLQuery<Void>(SQLTemplates.DEFAULT);
query.withRecursive(sub, unionAll(select(e.id, e.firstname, e.superiorId).from(e).where(e.firstname.eq("Mike")), select(e.id, e.firstname, e.superiorId).from(e, sub).where(e.superiorId.eq(sub.get(e.id))))).from(sub);
QueryMetadata md = query.getMetadata();
md.setProjection(Wildcard.all);
SQLSerializer serializer = new SQLSerializer(Configuration.DEFAULT);
serializer.serialize(md, false);
assertEquals("with recursive sub as ((select EMPLOYEE.ID, EMPLOYEE.FIRSTNAME, EMPLOYEE.SUPERIOR_ID\n" + "from EMPLOYEE EMPLOYEE\n" + "where EMPLOYEE.FIRSTNAME = ?)\n" + "union all\n" + "(select EMPLOYEE.ID, EMPLOYEE.FIRSTNAME, EMPLOYEE.SUPERIOR_ID\n" + "from EMPLOYEE EMPLOYEE, sub\n" + "where EMPLOYEE.SUPERIOR_ID = sub.ID))\n" + "select *\n" + "from sub", serializer.toString());
}
use of com.querydsl.core.Tuple in project querydsl by querydsl.
the class UnionBase method union_multiple_columns3.
@SuppressWarnings("unchecked")
@Test
@ExcludeIn(DERBY)
public void union_multiple_columns3() throws SQLException {
SubQueryExpression<Tuple> sq1 = query().from(employee).select(employee.firstname, employee.lastname);
SubQueryExpression<Tuple> sq2 = query().from(employee).select(employee.firstname, employee.lastname);
SQLQuery<?> query = query();
query.union(sq1, sq2);
List<Tuple> list = query.select(employee.lastname, employee.firstname).fetch();
assertFalse(list.isEmpty());
for (Tuple row : list) {
System.out.println(row.get(0, String.class) + " " + row.get(1, String.class));
}
}
use of com.querydsl.core.Tuple in project querydsl by querydsl.
the class UnionBase method union_multiple_columns.
@SuppressWarnings("unchecked")
@Test
public void union_multiple_columns() throws SQLException {
SubQueryExpression<Tuple> sq1 = query().from(employee).select(employee.firstname, employee.lastname);
SubQueryExpression<Tuple> sq2 = query().from(employee).select(employee.lastname, employee.firstname);
List<Tuple> list = query().union(sq1, sq2).fetch();
assertFalse(list.isEmpty());
for (Tuple row : list) {
assertNotNull(row.get(0, Object.class));
assertNotNull(row.get(1, Object.class));
}
}
use of com.querydsl.core.Tuple in project querydsl by querydsl.
the class CollQueryStandardTest method tupleMultipleFieldsProjection.
@Test
public void tupleMultipleFieldsProjection() {
List<Tuple> tuples = CollQueryFactory.from(cat, data).select(cat.name, cat.birthdate).fetch();
for (Tuple tuple : tuples) {
assertNotNull(tuple.get(cat.name));
assertNotNull(tuple.get(cat.birthdate));
}
}
use of com.querydsl.core.Tuple in project querydsl by querydsl.
the class CollQueryStandardTest method tupleOneNullFieldProjection.
@Test
public void tupleOneNullFieldProjection() {
List<Tuple> tuples = CollQueryFactory.from(cat, data).select(new Expression<?>[] { Expressions.nullExpression() }).fetch();
for (Tuple tuple : tuples) {
assertNotNull(tuple);
// THIS FAILS WITH NPE
assertEquals(1, tuple.size());
assertNull(tuple.get(Expressions.nullExpression()));
}
}
Aggregations