Index: RDBMSFetchStatement.java =================================================================== RCS file: /cvsroot/jpox/JPOX/Core/src/java/org/jpox/store/rdbms/RDBMSFetchStatement.java,v retrieving revision 1.10 diff -u -r1.10 RDBMSFetchStatement.java --- RDBMSFetchStatement.java 11 Aug 2005 10:44:27 -0000 1.10 +++ RDBMSFetchStatement.java 19 Aug 2005 09:08:54 -0000 @@ -220,6 +220,8 @@ */ public String toString(boolean lock) { + final RDBMSAdapter datastoreAdapter = ((RDBMSAdapter) mainTable.getStoreManager().getDatastoreAdapter()); + // Build the SELECT list StringBuffer stmt = new StringBuffer("SELECT "); Iterator iter = selected.iterator(); @@ -238,8 +240,14 @@ { mainTableColumnID[j] = referenceColumn(mainTable.getIDMapping().getDataStoreMapping(j).getDatastoreField()); } + stmt.append(" FROM ").append(mainTable.toString()).append(" ").append("THIS"); + // Add any locking of the rows for datastores that require WITH option to be placed after the FROM clause + if (lock && datastoreAdapter.getPlaceWithOptionAfterFromClause() && datastoreAdapter.getSelectWithLockOption() != null) { + stmt.append(" WITH ").append(datastoreAdapter.getSelectWithLockOption()); + } + StringBuffer joinConditions = new StringBuffer(); RDBMSAdapter dba = (RDBMSAdapter)mainTable.getStoreManager().getDatastoreAdapter(); @@ -257,7 +265,11 @@ String refTableName = ((Column)mapping.getDataStoreMapping(0).getDatastoreField()).getDatastoreContainerObject().toString(); if (dba.supportsAnsiJoinSyntax()) { - stmt.append(" LEFT OUTER JOIN ").append(refTableName).append(" ").append(alias).append(" ON "); + stmt.append(" LEFT OUTER JOIN ").append(refTableName).append(" ").append(alias); + if (datastoreAdapter.getPlaceWithOptionWithinJoinClauses()) { + stmt.append(" WITH ").append(datastoreAdapter.getSelectWithLockOption()); + } + stmt.append(" ON "); for (int i=0; i