/* * Copyright 2015, The Querydsl Team (http://www.querydsl.com/team) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.querydsl.jdo.serialization; import static com.querydsl.jdo.JDOExpressions.select; import static org.junit.Assert.assertEquals; import org.junit.Test; import com.querydsl.jdo.models.company.QDepartment; import com.querydsl.jdo.models.company.QEmployee; public class SubqueriesTest extends AbstractTest { private QDepartment department = QDepartment.department; private QDepartment d = new QDepartment("d"); private QEmployee e = new QEmployee("e"); private QEmployee employee = QEmployee.employee; /* "SELECT FROM " + Department.class.getName() + " WHERE this.employees.size() == " + * "(SELECT MAX(d.employees.size()) FROM " + Department.class.getName() + " d)"; */ @Test public void test1() { assertEquals( "SELECT FROM com.querydsl.jdo.models.company.Department " + "WHERE this.employees.size() == " + "(SELECT max(d.employees.size()) FROM com.querydsl.jdo.models.company.Department d)", serialize(select(department).from(department).where(department.employees.size().eq( select(d.employees.size().max()).from(d) ))) ); } /* "SELECT FROM " + Employee.class.getName() + " WHERE this.weeklyhours > " + * "(SELECT AVG(e.weeklyhours) FROM this.department.employees e)"; */ @Test public void test2() { assertEquals( "SELECT FROM com.querydsl.jdo.models.company.Employee " + "WHERE this.weeklyhours > " + "(SELECT avg(e.weeklyhours) FROM this.department.employees e)", serialize(select(employee).from(employee).where(employee.weeklyhours.gt( select(e.weeklyhours.avg()).from(employee.department.employees, e) ))) ); } /* "SELECT FROM " + Employee.class.getName() + * " WHERE this.weeklyhours > " + * "(SELECT AVG(e.weeklyhours) FROM this.department.employees e " + * " WHERE e.manager == this.manager)"; */ @Test public void test3() { assertEquals( "SELECT FROM com.querydsl.jdo.models.company.Employee " + "WHERE this.weeklyhours > " + "(SELECT avg(e.weeklyhours) FROM this.department.employees e WHERE e.manager == this.manager)", serialize(select(employee).from(employee).where(employee.weeklyhours.gt( select(e.weeklyhours.avg()).from(employee.department.employees, e).where(e.manager.eq(employee.manager)) ))) ); } /* "SELECT FROM " + Employee.class.getName() + " WHERE this.weeklyhours > " + * "(SELECT AVG(e.weeklyhours) FROM " + Employee.class.getName() + " e)"; */ @Test public void test4() { assertEquals( "SELECT FROM com.querydsl.jdo.models.company.Employee " + "WHERE this.weeklyhours > " + "(SELECT avg(e.weeklyhours) FROM com.querydsl.jdo.models.company.Employee e)", serialize(select(employee).from(employee).where(employee.weeklyhours.gt( select(e.weeklyhours.avg()).from(e) ))) ); } /* "SELECT FROM " + Employee.class.getName() + * " WHERE this.weeklyhours == emp.weeklyhours && " + * "emp.firstname == 'emp1First' VARIABLES Employee emp"; */ @Test public void test5() { assertEquals( "SELECT FROM com.querydsl.jdo.models.company.Employee " + "WHERE this.weeklyhours == e.weeklyhours && this.firstName == a1 " + "VARIABLES com.querydsl.jdo.models.company.Employee e " + "PARAMETERS java.lang.String a1", serialize(select(employee).from(employee, e) .where( employee.weeklyhours.eq(e.weeklyhours), employee.firstName.eq("emp1First") )) ); } }