我正在使用SQL版本的QueryDSL及其代码生成器来构建我的Q-Classes和数据库中相应的Java POJOS。
使用旧数据库(Firebird),我们将一些数据库CHAR(1)
列视为布尔,其域名为'Y
'和'N'
。将这些列投影到我的模型属性以自动映射或将这些Y / N值转换为布尔Java类型时,有什么办法吗?
答案 0 :(得分: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。