代碼如下: //主查詢 QuerySpec qs = new QuerySpec(); qs.setAdvancedQueryEnabled(true); int partIndex = qs.addClassList(WTPart.class, true); //子查詢 QuerySpec subQS = new QuerySpec(); subQS.appendSelect(ConstantExpression.newExpression("A"), false); subQS.getFromClause().setAliasPrefix("B"); int subPartIndex = subQS.addClassList(WTPart.class, false); //找出主查詢及子查詢中FROM表的別名 TableExpression[] tables = new TableExpression[2]; String[] alias = new String[2]; tables[0] = qs.getFromClause().getTableExpressionAt(partIndex); alias[0] = qs.getFromClause().getAliasAt(partIndex); tables[1] = subQS.getFromClause().getTableExpressionAt(subPartIndex); alias[1] = subQS.getFromClause().getAliasAt(subPartIndex); //關鍵代碼如下 WhereExpression exp = new SearchCondition(WTPart.class, WTAttributeNameIfc.ID_NAME,WTPart.class, "iterationInfo.predecessor.key.id"); subQS.appendWhere(exp, tables, alias); //將子查詢與主查詢結合 qs.appendWhere(new NegatedExpression(new ExistsExpression(subQS)), null); //添加其它條件 qs.appendAnd(); exp = new SearchCondition(WTPart.class, WTPart.NUMBER, SearchCondition.EQUAL, "partNumber"); qs.appendWhere(exp, new int[]{partIndex});