2014-12-29 2 views
1

다음 쿼리를 만들려고 노력했지만 처음부터 시도했지만 어디에서 왔는지 모릅니다. 각 테이블에 엔티티가 있다고 가정 할 때 Criteria Builder를 사용하여이 쿼리를 어떻게 만들 수 있습니까?기준 JPA 2, 최대 절전 모드 - 복수 조인

SELECT * 
     FROM TCTIPort as CTIPort   
     INNER JOIN TCTIBoardType AS BoardType      
     ON CTIPort.BoardType = BoardType.BoardType 

     LEFT JOIN TSysPort AS Port    
     ON CTIPort.Switch = Port.Switch AND   
      CTIPort.Machine = Port.Machine AND   
      CTIPort.Port = Port.Channel 

     LEFT JOIN TSysMachineId AS Mach   
     ON Mach.IdApp = Port.IdApp AND   
      Mach.IdTypeApp = Port.IdTypeApp   

     LEFT JOIN TUnPbxGenericValue AS Gen   
     ON CTIPort.Machine = Gen.Machine AND   
      CTIPort.Port = Gen.Port   

     LEFT JOIN TUnPbxGenericName AS GName   
     ON GName.IdGenericName = Gen.IdGenericName   

     LEFT JOIN TSysTypeOfApp STA   
     ON STA.IdTypeOfApp = Port.IdTypeApp 

     LEFT JOIN TSysApplication AS SysApp 
     ON SysApp.IdApp = Port.IdApp 
     AND SysApp.idTypeOfApp = Port.idTypeApp 

     WHERE   
      LTRIM(RTRIM(BoardClass)) IN ('MSI', 'TAP') AND   
      CTIPort.Switch = @Switch AND   
      CTIPort.Machine = @Machine AND   
      (CTIPort.Port = @Port OR @Port IS NULL) AND   
      (Mach.Machine LIKE @NameMachine OR  
      Gen.GenericValue LIKE @NameMachine OR  
      @NameMachine IS NULL)  
     ORDER BY  
      CTIPort.Port 

각 열에 인터페이스 "JOIN"을 사용해야합니까? 조인에 "AND"조건을 어떻게 추가합니까?

몇 가지 예제를 검색했지만 간단한 쿼리 (withou "and"및 더 이상의 테이블이 없으면 max 2) 만 보여줍니다.

답변

2

JPA 2.0에는 "JOIN + ON"이 지원되지 않습니다. 당신이 조인 절에 조건을 추가 할 경우 2.1

JPA를 사용해야합니다

select p 
from Person p 
left join p.dogs d 
where d.age = 15 and d.sex = 'MALE' 

:

당신이 뭔가를 할 필요가있을 것이다