You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by mt...@apache.org on 2009/05/07 21:57:35 UTC
svn commit: r772756 - in
/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc:
kernel/PreparedStatementManagerImpl.java sql/DBDictionary.java
Author: mtylenda
Date: Thu May 7 19:57:34 2009
New Revision: 772756
URL: http://svn.apache.org/viewvc?rev=772756&view=rev
Log:
OPENJPA-736: Change the way generated keys are retrieved so that the feature works also with databases other than DB2
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java?rev=772756&r1=772755&r2=772756&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java Thu May 7 19:57:34 2009
@@ -125,8 +125,7 @@
sql).getMessage());
}
if (autoAssignColNames != null)
- populateAutoAssignCols(stmnt, autoAssign, autoAssignColNames,
- row);
+ populateAutoAssignCols(stmnt, autoAssign, row);
else {
StateManagerImpl sm = (StateManagerImpl)row.getPrimaryKey();
if (sm != null) {
@@ -168,19 +167,18 @@
* sql to select the key will be issued from DBDictionary.
*/
protected List populateAutoAssignCols(PreparedStatement stmnt,
- Column[] autoAssign, String[] autoAssignColNames, RowImpl row)
+ Column[] autoAssign, RowImpl row)
throws SQLException {
List vals = null;
if (_dict.supportsGetGeneratedKeys) {
// set auto assign values to id col
- vals = getGeneratedKeys(stmnt, autoAssignColNames);
+ vals = getGeneratedKeys(stmnt, autoAssign);
}
- setObjectId(vals, autoAssign, autoAssignColNames, row);
+ setObjectId(vals, autoAssign, row);
return vals;
}
- protected void setObjectId(List vals, Column[] autoAssign,
- String[] autoAssignColNames, RowImpl row)
+ protected void setObjectId(List vals, Column[] autoAssign, RowImpl row)
throws SQLException{
OpenJPAStateManager sm = row.getPrimaryKey();
ClassMapping mapping = (ClassMapping) sm.getMetaData();
@@ -203,13 +201,13 @@
* getGeneratedKeys.
*/
protected List getGeneratedKeys(PreparedStatement stmnt,
- String[] autoAssignColNames)
+ Column[] autoAssign)
throws SQLException {
ResultSet rs = stmnt.getGeneratedKeys();
- List vals = new ArrayList();
+ List<Object> vals = new ArrayList<Object>();
while (rs.next()) {
- for (int i = 0; i < autoAssignColNames.length; i++)
- vals.add(rs.getObject(autoAssignColNames[i]));
+ for (int i = 0; i < autoAssign.length; i++)
+ vals.add(rs.getObject(i + 1));
}
rs.close();
return vals;
@@ -228,7 +226,8 @@
&& row.getPrimaryKey() != null) {
autoAssignColNames = new String[autoAssign.length];
for (int i = 0; i < autoAssign.length; i++)
- autoAssignColNames[i] = autoAssign[i].getName();
+ autoAssignColNames[i] =
+ _dict.convertSchemaCase(autoAssign[i].getName());
}
return autoAssignColNames;
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=772756&r1=772755&r2=772756&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java Thu May 7 19:57:34 2009
@@ -3990,7 +3990,7 @@
* Convert the specified schema name to a name that the database will
* be able to understand.
*/
- protected String convertSchemaCase(String objectName) {
+ public String convertSchemaCase(String objectName) {
if (objectName == null)
return null;