Hi Jakob, the code changes seem to work well. Thank you very much. I'll tell if further problems occur.
Thank you for your help, Peter > hi peter, > please replace the method addJoin in SqlQueryStatement with the following: > private void addJoin(TableAlias left, Object[] leftKeys, TableAlias > right, > Object[] rightKeys, boolean outer, String name) > { > TableAlias extAlias, rightCopy; > left.addJoin(new Join(left, leftKeys, right, rightKeys, outer, > name)); > // build join between left and extents of right > if (right.hasExtents()) > { > for (int i = 0; i < right.extents.size(); i++) > { > extAlias = (TableAlias) right.extents.get(i); > FieldDescriptor[] extKeys = > getExtentFieldDescriptors(extAlias, > (FieldDescriptor[])rightKeys); > left.addJoin(new Join(left, leftKeys, extAlias, extKeys, > true, > name)); > } > } > // we need to copy the alias on the right for each extent on the > left > if (left.hasExtents()) > { > for (int i = 0; i < left.extents.size(); i++) > { > extAlias = (TableAlias) left.extents.get(i); > FieldDescriptor[] extKeys = > getExtentFieldDescriptors(extAlias, > (FieldDescriptor[])leftKeys); > rightCopy = right.copy("C" + i); > // copies are treated like normal extents > right.extents.add(rightCopy); > right.extents.addAll(rightCopy.extents); > addJoin(extAlias, extKeys, rightCopy ,rightKeys, true > ,name); > } > } > } > /** > * Get the FieldDescriptors of the extent based on the > FieldDescriptors of > the parent > * @param extAlias > * @param fds > * @return > */ > private FieldDescriptor[] getExtentFieldDescriptors(TableAlias > extAlias, > FieldDescriptor[] fds) > { > FieldDescriptor[] result = new FieldDescriptor[fds.length]; > for (int i = 0; i < fds.length; i++) > { > result[i] = > extAlias.cld.getFieldDescriptorByName(fds[i].getAttributeName()); > } > return result; > } > getExtentFieldDescriptors is new and tries to get the correct > fieldDescriptors > please report any problems asap. > hth > jakob --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]