2016-12-15 6 views
0

Я использую SQL-версию QueryDSL и генератор кода для создания моих Q-классов и соответствующего Java POJOS из базы данных.QueryDSL SQL. Поле базы данных Char Y/N для атрибута boolean в модели

Использование унаследованной базы данных (Firebird) мы несколько баз данных CHAR(1) столбцов рассматриваются как булевого чьего домен 'Y'N'. Есть ли способ проецирования этих столбцов в мои атрибуты модели для автоматической сопоставления или преобразования этих значений Y/N в логический тип Java?

ответ

1

querydsl-sql вернет тип, отображаемый используемым драйвером JDBC. Я хотел бы предложить использовать Projections.constructor, чтобы создать экземпляр POJO и есть поглотитель, который возвращает 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); 
    } 

} 

Кроме того, вы можете создать конкретный экземпляр com.querydsl.core.types.MappingProjection, перекрывая protected abstract T map(Tuple row) чтобы создать экземпляр POJO с нужными типами.