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