简体   繁体   中英

How to fetch local attribute value through QuerySpec in Windchill

I created a local string type attribute on a type in Windchill. I'm trying to fetch the value of that attribute using QuerySpec but it's throwing the following exception:

2019-04-16 20:53:05,092 INFO [ajp-nio-127.0.0.1-8011-exec-5] wt.system.err - wt.query.QueryException: Attribute "ptc_str_89typeInfoLCSProduct" is not a member of class "class com.lcs.wc.product.LCSSKU" 2019-04-16 20:53:05,092 INFO [ajp-nio-127.0.0.1-8011-exec-5] wt.system.err - Nested exception is: Attribute "ptc_str_89typeInfoLCSProduct" is not a member of class "class com.lcs.wc.produ

Following is my code:

    String colorwayId = product.getFlexType().getAttribute("colorwayID")
            .getColumnName();
    QuerySpec qs = new QuerySpec(); 
    int classIndex = qs.appendClassList(typeDefRef.getKey().getClass(), false); 
    ClassAttribute ca = new ClassAttribute(
            typeDefRef.getKey().getClass(), colorwayId);
    qs.appendSelect(ca, new int[] { classIndex }, false);
    QueryResult qr = PersistenceHelper.manager.find(qs);

Normally ClassAttribute gets attribute name instead of column name (database column). Your ptc_str_89typeInfoLCSProduct column is in fact typeInfoLCSProduct.ptc_str_89 like State is state.state .

To get this information, you need to use PersistableAdapter like this:

public String getAttributeColumnName(String softType, String logicalAttributeName) throws WTException {
    PersistableAdapter persistableAdapter = new PersistableAdapter(softType, Locale.getDefault(), Operation.DISPLAY);
    persistableAdapter.load(logicalAttributeName);

    AttributeTypeSummary attributeDescriptor = persistableAdapter.getAttributeDescriptor(logicalAttributeName);

    return null != attributeDescriptor ? (String) attributeDescriptor.get(AttributeTypeSummary.DESCRIPTION) : null;
}

And then use this method:

String colorwayId = getAttributeColumnName("your_softtype", "attribute_name_from_type_manager");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM