2017-06-19 76 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)); 
     } 
    } 

這個例子是從項目本身採取