Hi,
I received new information from the JDBC Driver provider:
I took a look at the Java API documentation and found the following information:
setObject
void setObject(int parameterIndex,
Object x)
throws SQLException
Sets the value of the designated parameter using the given object. The second parameter must be of type Object; therefore, the java.lang equivalent objects should be used for built-in types.
The JDBC specification specifies a standard mapping from Java Object types to SQL types. The given argument will be converted to the corresponding SQL type before being sent to the database.
Note that this method may be used to pass datatabase- specific abstract data types, by using a driver-specific Java type. If the object is of a class implementing the interface SQLData, the JDBC driver should call the method SQLData.writeSQL to write it to the SQL data stream. If, on the other hand, the object is of a class implementing Ref, Blob, Clob, NClob, Struct, java.net.URL, RowId, SQLXML or Array, the driver should pass it to the database as a value of the corresponding SQL type.
Note: Not all databases allow for a non-typed Null to be sent to the backend. For maximum portability, the setNull or the setObject(int parameterIndex, Object x, int sqlType) method should be used instead of setObject(int parameterIndex, Object x).
Note: This method throws an exception if there is an ambiguity, for example, if the object is of a class implementing more than one of the interfaces named above.
Parameters:
parameterIndex - the first parameter is 1, the second is 2, …
x - the object containing the input parameter value
Throws:
SQLException - if parameterIndex does not correspond to a parameter marker in the SQL statement; if a database access error occurs; this method is called on a closed PreparedStatement or the type of the given object is ambiguous
According to this documentation, we should be mapping all Java Data Types to SQL Data Types on a call to setObject. It seems that the Relativity JDBC driver is not handling this properly. I have submitted a Defect ticket (#3288) to our database regarding this issue.
As a workaround, you can explicitly state the sqlType for setObject by using the following format (I tested this and it works):
setObject(int parameterIndex, Object x, int sqlType)
Best regards,