2013-02-21 3 views
2

다음 예제와 같이 CaseBuilder을 사용할 수 있습니까? 우리는 JPA/Hibernate 설정으로 Querydsl을 사용하고 있습니다.왼쪽 결합에서 null 값을 확인할 때 Querydsl CaseBuilder를 사용할 수 있습니까?

public class Foo { 
    Bar bar 
} 
public class Bar {} 

// query: 
Expression<Boolean> isNull = new CaseBuilder() 
    .when(foo.bar.isNull()).then(false) 
    .otherwise(true) 

new JPAQuery(em) 
    .from(foo) 
    .leftJoin(foo.bar) 
    .list(foo.name, isNull); 

나는 다음과 같은 오류가 유사한 쿼리하려고 할 때 : 그것은 Hibernate에 의해 문법적으로 가능하지만, 현재 지원되지 않는

java.lang.ClassCastException: org.hibernate.hql.internal.ast.tree.ParameterNode cannot be cast to org.hibernate.hql.internal.ast.tree.SelectExpression 
    at org.hibernate.hql.internal.ast.tree.CaseNode.getFirstThenNode(CaseNode.java:43) 
    at org.hibernate.hql.internal.ast.tree.CaseNode.getDataType(CaseNode.java:39) 
    at org.hibernate.hql.internal.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:152) 
    ... 

답변