Author: wisneskid
Date: Mon Jul 9 19:28:11 2007
New Revision: 554803
URL: http://svn.apache.org/viewvc?view=rev&rev=554803
Log:
OPENJPA-266, extensibility for platform specific version column
Passed TCK with Derby
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowImpl.java
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?view=diff&rev=554803&r1=554802&r2=554803
==============================================================================
---
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
Mon Jul 9 19:28:11 2007
@@ -3839,4 +3839,14 @@
this.bytes = bytes;
}
}
+
+ /**
+ * Return version column name
+ * @param column
+ * @param tableAlias : this is needed for platform specific version column
+ * @return
+ */
+ public String getVersionColumn(Column column, String tableAlias) {
+ return column.toString();
+ }
}
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowImpl.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowImpl.java?view=diff&rev=554803&r1=554802&r2=554803
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowImpl.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowImpl.java
Mon Jul 9 19:28:11 2007
@@ -20,6 +20,7 @@
import java.io.InputStream;
import java.io.Reader;
+import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Array;
@@ -756,7 +757,7 @@
hasVal = true;
}
- appendWhere(buf);
+ appendWhere(buf, dict);
return buf.toString();
}
@@ -797,14 +798,14 @@
StringBuffer buf = new StringBuffer();
buf.append("DELETE FROM ").
append(dict.getFullName(getTable(), false));
- appendWhere(buf);
+ appendWhere(buf, dict);
return buf.toString();
}
/**
* Appends the where clause onto the given sql buffer.
*/
- private void appendWhere(StringBuffer buf) {
+ private void appendWhere(StringBuffer buf, DBDictionary dict) {
boolean hasWhere = false;
for (int i = 0; i < _cols.length; i++) {
if (_vals[getWhereIndex(_cols[i])] == null)
@@ -815,9 +816,13 @@
else
buf.append(" AND ");
+ // Get platform specific version column name
+ if (_cols[i].getVersionStrategy() != null)
+ buf.append(dict.getVersionColumn(_cols[i], _cols[i]
+ .getTableName())).append(" = ?");
// sqlserver seems to have problems using null parameters in the
// where clause
- if (_vals[getWhereIndex(_cols[i])] == NULL)
+ else if (_vals[getWhereIndex(_cols[i])] == NULL)
buf.append(_cols[i]).append(" IS NULL");
else if (_types[i] == RAW)
buf.append(_cols[i]).append(" = ").append(_vals[i]);