Following is the code which i am trying to search WT part
public static WTSet searchWTPart(String partNumber, String type, boolean exactMatch ,String productfamilyforjsp,String ordertypeformjsp) throws WTException { System.out.println("Method partNumber "+partNumber); long branchId = 0; int iPartMaster, iPart; String criteria; QueryResult qr = null; //wt.pds.PartialResultException qr1 = new PartialResultException(arg0); QuerySpec qs= new QuerySpec(); iPartMaster = qs.addClassList(WTPartMaster.class,true); int defindex = qs.addClassList(StringDefinition.class, false); int valueindex = qs.addClassList(StringValue.class, false); // search product Family as per jsp product family Input if(productfamilyforjsp.equalsIgnoreCase("Helical/Emill")) { productfamilyforjsp="Helical"; } if(productfamilyforjsp.equalsIgnoreCase("Fluid Coupling")) { productfamilyforjsp="Fluid Coupling"; } if(productfamilyforjsp.equalsIgnoreCase("Worm/Altra")) { productfamilyforjsp="Worm"; } if(productfamilyforjsp.equalsIgnoreCase("Gear Motor")) { productfamilyforjsp="Geared motor"; } if(productfamilyforjsp.equalsIgnoreCase("Planetary")) { productfamilyforjsp="Planetary"; } if(productfamilyforjsp.equalsIgnoreCase("Lift")) { productfamilyforjsp="Lift"; } if(partNumber.contains("*")){ System.out.println("Leng: "+partNumber.length()); partNumber=partNumber.substring(0, (partNumber.length()-1)); partNumber=partNumber+"%"; partNumber=partNumber.toUpperCase(); System.out.println("Key: "+partNumber); } else{ partNumber="%"+partNumber+"%"; partNumber=partNumber.toUpperCase(); } System.out.println("Process part NO :-"+partNumber); iPart=qs.appendClassList(WTPart.class,false); if(exactMatch){criteria = SearchCondition.EQUAL;} else{criteria = SearchCondition.LIKE;} System.out.println("criteria for check :-"+criteria); SearchCondition sc_number=new SearchCondition(WTPartMaster.class, WTPartMaster.NUMBER, criteria, partNumber); SearchCondition sc_master=new SearchCondition(WTPart.class, "masterReference.key.id", WTPartMaster.class, "thePersistInfo.theObjectIdentifier.id"); TypeDefinitionReference tref=TypedUtility.getTypeDefinitionReference(type); branchId = tref.getKey().getBranchId(); SearchCondition sc_branch=new SearchCondition(WTPart.class,"typeDefinitionReference.key.branchId",SearchCondition.EQUAL,branchId); qs.appendWhere(sc_master,new int []{iPart,iPartMaster}); qs.appendAnd(); qs.appendWhere(sc_number, new int[]{iPartMaster}); qs.appendAnd(); qs.appendWhere(sc_branch, new int[]{iPart}); /*qs.appendAnd(); qs.appendWhere(new SearchCondition(StringDefinition.class, StringDefinition.NAME, SearchCondition.EQUAL, "WERKS"), defindex); qs.appendAnd(); qs.appendWhere(new SearchCondition(StringValue.class, StringValue.VALUE, SearchCondition.EQUAL, productfamilyforjsp), valueindex); qs.appendAnd(); // to check value and name is equal qs.appendWhere(new SearchCondition(StringDefinition.class, "thePersistInfo.theObjectIdentifier.id", StringValue.class, "definitionReference.key.id"), new int[] { defindex, valueindex }); */ qs.appendAnd(); if(ordertypeformjsp.equalsIgnoreCase("ZUNT - Unit Sales")) { qs.appendWhere(new SearchCondition(StringDefinition.class, StringDefinition.NAME, SearchCondition.EQUAL, "MTART"), defindex); qs.appendAnd(); qs.appendWhere(new SearchCondition(StringValue.class, StringValue.VALUE, SearchCondition.LIKE, "ZFRT"), valueindex); qs.appendAnd(); // to check value and name is equal qs.appendWhere(new SearchCondition(StringDefinition.class, "thePersistInfo.theObjectIdentifier.id", StringValue.class, "definitionReference.key.id"), new int[] { defindex, valueindex }); //qs.appendHaving(new SearchCondition(StringDefinition.class,StringDefinition.NAME, SearchCondition.EQUAL, "MTART"), defindex); } if(ordertypeformjsp.equalsIgnoreCase("ZEXP - Export Sales")) { qs.appendWhere(new SearchCondition(StringDefinition.class, StringDefinition.NAME, SearchCondition.EQUAL, "MTART"), defindex); qs.appendAnd(); qs.appendWhere(new SearchCondition(StringValue.class, StringValue.VALUE, SearchCondition.EQUAL, "ZFRT"), valueindex); qs.appendAnd(); // to check value and name is equal qs.appendWhere(new SearchCondition(StringDefinition.class, "thePersistInfo.theObjectIdentifier.id", StringValue.class, "definitionReference.key.id"), new int[] { defindex, valueindex }); qs.appendOr(); qs.appendWhere(new SearchCondition(StringDefinition.class, StringDefinition.NAME, SearchCondition.EQUAL, "MTART"), defindex); qs.appendAnd(); qs.appendWhere(new SearchCondition(StringValue.class, StringValue.VALUE, SearchCondition.EQUAL, "ZSPR"), valueindex); qs.appendAnd(); // to check value and name is equal qs.appendWhere(new SearchCondition(StringDefinition.class, "thePersistInfo.theObjectIdentifier.id", StringValue.class, "definitionReference.key.id"), new int[] { defindex, valueindex }); } if(ordertypeformjsp.equalsIgnoreCase("ZDEX - Deemed Exports")) { qs.appendWhere(new SearchCondition(StringDefinition.class, StringDefinition.NAME, SearchCondition.EQUAL, "MTART"), defindex); qs.appendAnd(); qs.appendWhere(new SearchCondition(StringValue.class, StringValue.VALUE, SearchCondition.EQUAL, "ZFRT"), valueindex); qs.appendAnd(); // to check value and name is equal qs.appendWhere(new SearchCondition(StringDefinition.class, "thePersistInfo.theObjectIdentifier.id", StringValue.class, "definitionReference.key.id"), new int[] { defindex, valueindex }); qs.appendOr(); qs.appendWhere(new SearchCondition(StringDefinition.class, StringDefinition.NAME, SearchCondition.EQUAL, "MTART"), defindex); qs.appendAnd(); qs.appendWhere(new SearchCondition(StringValue.class, StringValue.VALUE, SearchCondition.EQUAL, "ZSPR"), valueindex); qs.appendAnd(); // to check value and name is equal qs.appendWhere(new SearchCondition(StringDefinition.class, "thePersistInfo.theObjectIdentifier.id", StringValue.class, "definitionReference.key.id"), new int[] { defindex, valueindex }); } if(ordertypeformjsp.equalsIgnoreCase("ZSPA - Spares Sales")) { qs.appendWhere(new SearchCondition(StringDefinition.class, StringDefinition.NAME, SearchCondition.EQUAL, "MTART"), defindex); qs.appendAnd(); qs.appendWhere(new SearchCondition(StringValue.class, StringValue.VALUE, SearchCondition.EQUAL, "ZSPR"), valueindex); qs.appendAnd(); // to check value and name is equal qs.appendWhere(new SearchCondition(StringDefinition.class, "thePersistInfo.theObjectIdentifier.id", StringValue.class, "definitionReference.key.id"), new int[] { defindex, valueindex }); } if(ordertypeformjsp.equalsIgnoreCase("ZTRD - Third Party Sales")) { qs.appendWhere(new SearchCondition(StringDefinition.class, StringDefinition.NAME, SearchCondition.EQUAL, "MTART"), defindex); qs.appendAnd(); qs.appendWhere(new SearchCondition(StringValue.class, StringValue.VALUE, SearchCondition.EQUAL, "ZSPR"), valueindex); qs.appendAnd(); // to check value and name is equal qs.appendWhere(new SearchCondition(StringDefinition.class, "thePersistInfo.theObjectIdentifier.id", StringValue.class, "definitionReference.key.id"), new int[] { defindex, valueindex }); } System.out.println("\n\n ======== QUERY =======\n" + qs.toString() + "\n====================\n"); qr = new QueryResult(); qr = PersistenceHelper.manager.find((StatementSpec) qs); // qs.setQueryLimit(-1); System.out.println("searchWTPart"); System.out.println("Query size : " + qr.size()); WTSet set = new WTHashSet(qr); System.out.println("Found " + set.size() + " objects!"); //System.out.println("PART querystring: \n "+qs.toString()); System.out.println("size"+set.size()); Iterator<?> it = null; it = set.persistableIterator(); String number=""; WTPart part =null; while(it.hasNext()) { WTPartMaster partMaster = (WTPartMaster) it.next(); part = (WTPart) VersionControlHelper.service.allIterationsOf(partMaster).nextElement(); number=part.getNumber(); System.out.println(number); } return set; } 1 Answer
Perform a QuerySpec search using StringValue as the main class. Afterwards, you can get a reference of the object that owns the value.