2017-06-19 75 views
0

所有查询需要实现像SQL查询:如何写联盟查询DSL

SELECT A.class, A.section 
FROM 
STUDENT A 
INNER JOIN DEPARTMENT on A.student_id = B.id 
WHERE DEPT_NBR is not null 
UNION ALL 
SELECT A.class, A.section 
FROM 
TEACHER A 
INNER JOIN DEPARTMENT on A.teacher_id = B.id 
WHERE DEPT_NBR is not null 

我怎么能写与QueryDSL这样的说法? (我没有使用任何JPA)。任何帮助/提示非常感谢!

回答

0

有很多例子可以帮助你。 https://github.com/querydsl/querydsl/blob/8f96f416270d0353f90a6551547906f3c217833a/querydsl-sql/src/test/java/com/querydsl/sql/UnionBase.java#L73

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)); 
     } 
    } 

这个例子是从项目本身采取