2016-12-15 6 views
0

SQL 버전의 QueryDSL을 사용하고 데이터베이스에서 Q- 클래스와 해당 Java POJOS를 빌드하는 코드 생성기를 사용합니다. 레거시 데이터베이스 (파이어 버드) 우리는 일부 데이터베이스 CHAR(1)부울 도메인이 'Y입니다 '와 'N'으로 처리 한 사용QueryDSL SQL. 모델에서 부울 Y/N 데이터베이스 필드를 부울 속성으로 변환

. 이러한 Y/N 값을 부울 Java 유형으로 자동 매핑하거나 변환하기 위해 이러한 열을 내 모델 속성에 투영 할 때 어떤 방법이 있습니까?

답변

1

querydsl-sql은 사용중인 JDBC 드라이버가 매핑 한 유형을 반환합니다. 나는 당신의 POJO를 인스턴스화 Projections.constructor을 사용하는 것이 좋습니다 다음과 같은 boolean을 반환하는 게터 것 :

List<Pojo> pojos = query 
        .select(Projections.constructor(Pojo.class, qtable.yesNoValue)) 
        .fetch(); 

public class Pojo { 

    private final String yesNoValue; 

    public Pojo(String yesNoValue) { 
     this.yesNoValue = yesNoValue; 
    } 

    public boolean getYesNoValue() { 
     return "Y".equals(yesNoValue); 
    } 

} 

마찬가지로, 원하는 유형으로 POJO를 인스턴스화 protected abstract T map(Tuple row)를 오버라이드 (override), com.querydsl.core.types.MappingProjection의 구체적인 인스턴스를 만들 수 있습니다.