windchill使用QuerySpec查询对象时自定义列

第一种,直接使用ClassAttribue来取查询对象。

qs.appendSelect(new ClassAttribute(UserEntity.class,"userName"), new int[]{a0}),false);

userName属性是一个date类型的,则会直接使用TO_CHAR函数进行转换,并且没有别名,如果同一张表关联多次,会出现列名不唯一的错误

第二种,使用对象属性的原列明查询,QuerySpec不会进行类型转换。

String alias= qs.getFromClause().getAliasAt(a1);
qs.appendSelect(new TableColumn(alias,"loginTime"),new int[]{a0}, false);

第三种,自定义使用某个函数来进行列的查询

KeywordExpression loginTime= getAliasObject("TO_CHAR(a1.logTime,'yyyy-mm-dd hh24:mi:ss')","aliasLoginTime");
qs.appendSelect(loginTime,new int[]{a1 }, false);

private keywordExpress getAliasObject(String column,String aliasName){
    keywordExpress keyExp=null;
    if(alias=null)
        keyExp = new KeywordExpress(name);
    )else{
        keyExp = new KeywordExpress(name+" as ");
        keyExp.setColumnAlias(alias);
    }
    return keyExp;
}

猜你喜欢

转载自www.cnblogs.com/coding88/p/9195912.html