OPENJPA-965: Open up FinderCacheImpl for jdbc and non-jdbc

like implementation

git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@751148 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Fay Wang 2009-03-07 00:40:53 +00:00
parent 70cfcaaee1
commit b612d64620
2 changed files with 31 additions and 4 deletions

View File

@ -109,6 +109,10 @@ public class FinderQueryImpl
return _sql; return _sql;
} }
public Column[] getPKColumns() {
return _pkCols;
}
private Object[] getPKValues(OpenJPAStateManager sm, JDBCStore store) { private Object[] getPKValues(OpenJPAStateManager sm, JDBCStore store) {
Object[] pks = null; Object[] pks = null;
Object oid = sm.getObjectId(); Object oid = sm.getObjectId();
@ -138,12 +142,15 @@ public class FinderQueryImpl
PreparedStatement stmnt = null; PreparedStatement stmnt = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
stmnt = conn.prepareStatement(_sql); stmnt = _select.prepareStatement(conn, _sql);
Object[] params = getPKValues(sm, jstore); Object[] params = getPKValues(sm, jstore);
for (int i = 0; i <params.length; i++) { if (stmnt != null) {
dict.setUnknown(stmnt, i+1, params[i], _pkCols[i]); for (int i = 0; i <params.length; i++) {
dict.setUnknown(stmnt, i+1, params[i], _pkCols[i]);
}
} }
rs = stmnt.executeQuery();
rs = _select.executeQuery(conn, stmnt, this, jstore, params);
return _select.getEagerResult(conn, stmnt, rs, jstore, return _select.getEagerResult(conn, stmnt, rs, jstore,
(JDBCFetchConfiguration)fetch, forUpdate, _buffer); (JDBCFetchConfiguration)fetch, forUpdate, _buffer);
} catch (SQLException se) { } catch (SQLException se) {

View File

@ -43,6 +43,7 @@ import org.apache.commons.collections.iterators.EmptyIterator;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.openjpa.jdbc.conf.JDBCConfiguration; import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
import org.apache.openjpa.jdbc.kernel.EagerFetchModes; import org.apache.openjpa.jdbc.kernel.EagerFetchModes;
import org.apache.openjpa.jdbc.kernel.FinderQueryImpl;
import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration; import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
import org.apache.openjpa.jdbc.kernel.JDBCLockManager; import org.apache.openjpa.jdbc.kernel.JDBCLockManager;
import org.apache.openjpa.jdbc.kernel.JDBCStore; import org.apache.openjpa.jdbc.kernel.JDBCStore;
@ -439,6 +440,15 @@ public class SelectImpl
return sql.prepareStatement(conn, fetch, rsType, -1); return sql.prepareStatement(conn, fetch, rsType, -1);
} }
/**
* This method is to provide override for non-JDBC or JDBC-like
* implementation of preparing statement.
*/
public PreparedStatement prepareStatement(Connection conn,
String sql) throws SQLException {
return conn.prepareStatement(sql);
}
/** /**
* This method is to provide override for non-JDBC or JDBC-like * This method is to provide override for non-JDBC or JDBC-like
* implementation of setting query timeout. * implementation of setting query timeout.
@ -469,6 +479,16 @@ public class SelectImpl
return stmnt.executeQuery(); return stmnt.executeQuery();
} }
/**
* This method is to provide override for non-JDBC or JDBC-like
* implementation of executing query.
*/
public ResultSet executeQuery(Connection conn, PreparedStatement stmnt,
FinderQueryImpl finder, JDBCStore store, Object[] params)
throws SQLException {
return stmnt.executeQuery();
}
/** /**
* This method is to provide override for non-JDBC or JDBC-like * This method is to provide override for non-JDBC or JDBC-like
* implementation of getting count from the result set. * implementation of getting count from the result set.