2016-12-15 87 views
0

我正在使用QueryDSL的SQL版本及其代码生成器来从数据库构建我的Q-Classes和相应的Java POJOS。QueryDSL SQL。 Char Y/N数据库字段为模型中的布尔属性

使用旧的数据库(火鸟),我们有一些数据库CHAR(1)列视为布尔,其域名为'Y'和'N'。将这些列投影到我的模型属性以自动将这些Y/N值映射或转换为布尔Java类型时,有什么办法吗?

回答

1

querydsl-sql将返回正在使用的JDBC驱动程序映射的类型。我会建议使用Projections.constructor来实例POJO,并有如下返回boolean一个getter:

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。

相关问题