2014-11-02 3 views
2

:QueryDSL 돌기 널값이 쿼리를 부여

final List list = 
new JPAQuery(entityManager).from(qdevice).leftJoin(qdevice.parentDevice) 
.list(Projections.bean(Device.class, qdevice.id, qdevice.parentDevice)); 

문제는 parentDevice null가 아닌 경우 쿼리가 장치 복귀이다

(parentDevice는 장치의 유형이다). 왜? 다시 가치를 얻는 방법? 투영에서 qdevice.parentDevice를 제거하면 결과가 양호합니다.

QueryDsl 버전은 3.2.0

답변

2

당신이 조인은 왼쪽으로 관련되지 않기 때문에 listqdevice.parentDevice에 대한 언급은 내부로 취급 될 수있다이

QDevice device = QDevice.device; 
QDevice parentDevice = new QDevice("parentDevice"); 
List<Device> list = new JPAQuery(entityManager) 
    .from(device) 
    .leftJoin(device.parentDevice, parentDevice) 
    .list(Projections.bean(Device.class, device.id, parentDevice)); 

을 시도 할 수있다 .