如何在Vaadin字段中显示Postgres别名字段?

问题描述

这是我写的查询

public List<PrRevamps> fetchRevampHistory(String refNo) {
    List<PrRevamps> list = dsl.select(
            DSL.concat(
                Tables.PR_REVAMPS.PR_REVAMP_CODE,DSL.val("-"),Tables.PR_REVAMP_CODES.PR_DESCRIPTION
            ).as("DESCRIPTION"),Tables.PR_REVAMPS.PR_REVAMP_DATE,Tables.PR_REVAMPS.PR_KEY)
        .from(Tables.PR_REVAMP_CODES,Tables.PR_REVAMPS)
        .where(Tables.PR_REVAMPS.PR_REVAMP_CODE.equal(Tables.PR_REVAMP_CODES.PR_CODE))
        .and(Tables.PR_REVAMPS.PR_PROP_REF_NO.equal(refNo))
        .fetchInto(PrRevamps.class);
    
    return list;
}

,我需要在vaadin网格的一行中显示revampCode和说明。 即“ A-Marshall”

这是下面的网格代码

private void populateRevampGrid() {
    Object ref = serv.getAttribute("ref");
    String propRef = "";
    
    if(ref != null) {
        propRef = (String)ref;
        
        List<PrRevamps> list = getService().fetchRevampHistory(propRef);
        
        if(!list.isEmpty()) {
            revampGrid.setContainerDataSource(new BeanItemContainer<>(list));
            //revampGrid.addColumn("prRevampCode").setHeaderCaption("REVAMP DESCRIPTION");
            revampGrid.removeColumn("prKey");
            revampGrid.removeColumn("prLeaseType");
            revampGrid.removeColumn("prPropRefNo");
            revampGrid.getColumn("prRevampDate").setHeaderCaption("REVAMP DATE");
            revampGrid.getColumn("prRevampCode").setHeaderCaption("REVAMP TYPE");
        } else {
            clearfields();
            Notification.show("list is empty",Type.ERROR_MESSAGE.WARNING_MESSAGE);
        }
    }
}

解决方法

据我了解,您具有描述字段,该字段具有所需的值。

如果没有,则可以添加从对象动态生成的属性。但是为此,您将需要使用Container。

完整的描述可以在Vaadin文档https://vaadin.com/docs/v7/framework/datamodel/datamodel-container.html中找到(请参见GeneratedPropertyContainer)