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

本文介绍了三种SQL查询方式:直接使用ClassAttribute获取对象、使用原始列名避免类型转换问题、自定义函数进行复杂查询。每种方法都有其适用场景,有助于解决实际开发中遇到的问题。

第一种,直接使用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;
}

 

转载于:https://www.cnblogs.com/coding88/p/9195912.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值