You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by th...@apache.org on 2017/07/07 02:06:33 UTC

[11/58] [abbrv] commons-dbutils git commit: Fixed a number of FindBugs and Checkstyle issues

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/3535b10b/src/main/java/org/apache/commons/dbutils2/BatchExecutor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils2/BatchExecutor.java b/src/main/java/org/apache/commons/dbutils2/BatchExecutor.java
index cb1773e..934c00b 100644
--- a/src/main/java/org/apache/commons/dbutils2/BatchExecutor.java
+++ b/src/main/java/org/apache/commons/dbutils2/BatchExecutor.java
@@ -22,23 +22,30 @@ import java.sql.Types;
 
 /**
  * This class provides the ability to execute a batch of statements.
- * 
+ *
  * It is really just a facade to an array of UpdateExecutors.
- * 
+ *
+ * @since 2.0
  * @author William Speirs <ws...@apache.org>
  */
 public class BatchExecutor extends AbstractExecutor<BatchExecutor> {
 
     private final boolean closeConn;
-    
-    public BatchExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
+
+    /**
+     * Constructs a BatchExecutor given a connection and SQL statement.
+     * @param conn The connection to use during execution.
+     * @param sql The SQL statement.
+     * @param closeConnection If the connection should be closed or not.
+     * @throws SQLException thrown if there is an error during execution.
+     */
+    BatchExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
         super(conn, sql);
         this.closeConn = closeConnection;
     }
-    
+
     /**
      * Binds a parameter name to a value for a given statement.
-     * @param statement the statement number to operate on.
      * @param name the name of the parameter.
      * @param value the value to bind to the parameter.
      * @return this object.
@@ -49,7 +56,7 @@ public class BatchExecutor extends AbstractExecutor<BatchExecutor> {
     public BatchExecutor bind(final String name, final Object value) throws SQLException {
         return bind(name, value, false);
     }
-    
+
     /**
      * Binds null to a parameter.
      * Types.VARCHAR is used as the type's parameter.
@@ -62,7 +69,7 @@ public class BatchExecutor extends AbstractExecutor<BatchExecutor> {
     public BatchExecutor bindNull(final String name) throws SQLException {
         return bindNull(name, Types.VARCHAR, false);
     }
-    
+
     /**
      * Binds null to a parameter, specifying the parameter's type.
      * @param name the name of the parameter.
@@ -74,7 +81,7 @@ public class BatchExecutor extends AbstractExecutor<BatchExecutor> {
     public BatchExecutor bindNull(final String name, final int sqlType) throws SQLException {
         return bindNull(name, sqlType, false);
     }
-    
+
     /**
      * Adds the statement to the batch after binding all of the parameters.
      * @return this object.
@@ -85,10 +92,10 @@ public class BatchExecutor extends AbstractExecutor<BatchExecutor> {
         try {
             getStatement().addBatch();
             clearValueMap();
-        } catch(SQLException e) {
+        } catch (SQLException e) {
             rethrow(e);
         }
-        
+
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/3535b10b/src/main/java/org/apache/commons/dbutils2/DbUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils2/DbUtils.java b/src/main/java/org/apache/commons/dbutils2/DbUtils.java
index 5968d4e..515392f 100644
--- a/src/main/java/org/apache/commons/dbutils2/DbUtils.java
+++ b/src/main/java/org/apache/commons/dbutils2/DbUtils.java
@@ -17,8 +17,10 @@
 package org.apache.commons.dbutils2;
 
 import static java.sql.DriverManager.registerDriver;
+
 import java.io.PrintWriter;
 import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.sql.Connection;
 import java.sql.Driver;
 import java.sql.DriverPropertyInfo;
@@ -216,14 +218,27 @@ public final class DbUtils {
             try {
                 Driver driver = driverConstructor.newInstance();
                 registerDriver(new DriverProxy(driver));
+            } catch (SQLException e) {
+                return false;
+            } catch (InstantiationException e) {
+                return false;
+            } catch (IllegalAccessException e) {
+                return false;
+            } catch (IllegalArgumentException e) {
+                return false;
+            } catch (InvocationTargetException e) {
+                return false;
             } finally {
                 driverConstructor.setAccessible(isConstructorAccessible);
             }
 
             return true;
-        } catch (Exception e) {
+        } catch (ClassNotFoundException e) {
+            return false;
+        } catch (NoSuchMethodException e) {
+            return false;
+        } catch (SecurityException e) {
             return false;
-
         }
     }
 
@@ -396,7 +411,6 @@ public final class DbUtils {
         /**
          * Java 1.7 method.
          */
-        @SuppressWarnings("unused")
         public Logger getParentLogger() throws SQLFeatureNotSupportedException {
             throw new SQLFeatureNotSupportedException();
         }

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/3535b10b/src/main/java/org/apache/commons/dbutils2/GenerousBeanProcessor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils2/GenerousBeanProcessor.java b/src/main/java/org/apache/commons/dbutils2/GenerousBeanProcessor.java
index b85b66e..0904da8 100644
--- a/src/main/java/org/apache/commons/dbutils2/GenerousBeanProcessor.java
+++ b/src/main/java/org/apache/commons/dbutils2/GenerousBeanProcessor.java
@@ -28,17 +28,17 @@ import java.util.Arrays;
  * columns to Java Bean properties.
  */
 public class GenerousBeanProcessor extends BeanProcessor {
-    
+
     /**
      * Default constructor.
      */
     public GenerousBeanProcessor() {
         super();
     }
-    
+
     @Override
     protected int[] mapColumnsToProperties(final ResultSetMetaData rsmd,
-                                           final PropertyDescriptor[] props) throws SQLException {
+            final PropertyDescriptor[] props) throws SQLException {
 
         final int cols = rsmd.getColumnCount();
         final int[] columnToProperty = new int[cols + 1];
@@ -46,19 +46,19 @@ public class GenerousBeanProcessor extends BeanProcessor {
 
         for (int col = 1; col <= cols; col++) {
             String columnName = rsmd.getColumnLabel(col);
-            
+
             if (null == columnName || 0 == columnName.length()) {
                 columnName = rsmd.getColumnName(col);
             }
-            
-            final String generousColumnName = columnName.replace("_","");
+
+            final String generousColumnName = columnName.replace("_", "");
 
             for (int i = 0; i < props.length; i++) {
                 final String propName = props[i].getName();
-                
+
                 // see if either the column name, or the generous one matches
                 if (columnName.equalsIgnoreCase(propName) ||
-                    generousColumnName.equalsIgnoreCase(propName)) {
+                        generousColumnName.equalsIgnoreCase(propName)) {
                     columnToProperty[col] = i;
                     break;
                 }
@@ -67,5 +67,5 @@ public class GenerousBeanProcessor extends BeanProcessor {
 
         return columnToProperty;
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/3535b10b/src/main/java/org/apache/commons/dbutils2/InsertExecutor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils2/InsertExecutor.java b/src/main/java/org/apache/commons/dbutils2/InsertExecutor.java
index 39a6db6..9b5cecb 100644
--- a/src/main/java/org/apache/commons/dbutils2/InsertExecutor.java
+++ b/src/main/java/org/apache/commons/dbutils2/InsertExecutor.java
@@ -21,18 +21,32 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 
 
+/**
+ * Fluent class for executing inserts.
+ *
+ * @since 2.0
+ * @author William Speirs <ws...@apache.org>
+ */
 public class InsertExecutor extends AbstractExecutor<InsertExecutor> {
 
     private final boolean closeConn;
 
-    public InsertExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
+    /**
+     * Constructs an InsertExecutor given a connection and SQL statement.
+     * @param conn The connection to use during execution.
+     * @param sql The SQL statement.
+     * @param closeConnection If the connection should be closed or not.
+     * @throws SQLException thrown if there is an error during execution.
+     */
+    InsertExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
         super(conn, sql);
         this.closeConn = closeConnection;
     }
 
     /**
      * Executes the given INSERT SQL statement.
-     * 
+     *
+     * @param <T> the type returned by the ResultSetHandler.
      * @param handler The handler used to create the result object from
      * the <code>ResultSet</code> of auto-generated keys.
      *
@@ -54,10 +68,10 @@ public class InsertExecutor extends AbstractExecutor<InsertExecutor> {
         try {
             // execute the update
             getStatement().executeUpdate();
-            
+
             // get the result set
             final ResultSet resultSet = getStatement().getGeneratedKeys();
-            
+
             // run the handler over the results and return them
             return handler.handle(resultSet);
         } catch (SQLException e) {
@@ -72,7 +86,7 @@ public class InsertExecutor extends AbstractExecutor<InsertExecutor> {
         // we get here only if something is thrown
         return null;
     }
-    
+
     /**
      * Executes the given INSERT SQL statement.
      * @return the number of rows updated.
@@ -93,8 +107,8 @@ public class InsertExecutor extends AbstractExecutor<InsertExecutor> {
                 close(getConnection());
             }
         }
-        
+
         return 0; // only get here on an error
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/3535b10b/src/main/java/org/apache/commons/dbutils2/QueryExecutor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils2/QueryExecutor.java b/src/main/java/org/apache/commons/dbutils2/QueryExecutor.java
index 4a7c317..de55919 100644
--- a/src/main/java/org/apache/commons/dbutils2/QueryExecutor.java
+++ b/src/main/java/org/apache/commons/dbutils2/QueryExecutor.java
@@ -22,15 +22,22 @@ import java.sql.SQLException;
 
 /**
  * Fluent class for executing a query.
- * 
+ *
  * @since 2.0
  * @author William Speirs <ws...@apache.org>
  */
 class QueryExecutor extends AbstractExecutor<QueryExecutor> {
-    
+
     private final boolean closeConn;
 
-    public QueryExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
+    /**
+     * Constructs a QueryExecutor given a connection and SQL statement.
+     * @param conn The connection to use during execution.
+     * @param sql The SQL statement.
+     * @param closeConnection If the connection should be closed or not.
+     * @throws SQLException thrown if there is an error during execution.
+     */
+    QueryExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
         super(conn, sql);
         this.closeConn = closeConnection;
     }
@@ -46,7 +53,7 @@ class QueryExecutor extends AbstractExecutor<QueryExecutor> {
     public <T> T execute(ResultSetHandler<T> handler) throws SQLException {
         // throw an exception if there are unmapped parameters
         this.throwIfUnmappedParams();
-        
+
         // make sure our handler is not null
         if (handler == null) {
             if (closeConn) {

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/3535b10b/src/main/java/org/apache/commons/dbutils2/QueryRunner.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils2/QueryRunner.java b/src/main/java/org/apache/commons/dbutils2/QueryRunner.java
index 9dbc292..eecb252 100644
--- a/src/main/java/org/apache/commons/dbutils2/QueryRunner.java
+++ b/src/main/java/org/apache/commons/dbutils2/QueryRunner.java
@@ -50,7 +50,7 @@ public class QueryRunner {
     public QueryRunner(final DataSource ds) {
         this.ds = ds;
     }
-    
+
     /**
      * Returns the <code>DataSource</code> this runner is using.
      * <code>QueryRunner</code> methods always call this method to get the
@@ -76,7 +76,7 @@ public class QueryRunner {
         if (this.getDataSource() == null) {
             throw new SQLException(
                     "QueryRunner requires a DataSource to be "
-                    + "invoked in this way, or a Connection should be passed in");
+                            + "invoked in this way, or a Connection should be passed in");
         }
         return this.getDataSource().getConnection();
     }
@@ -98,10 +98,10 @@ public class QueryRunner {
      * <code>Connection</code> is retrieved from the <code>DataSource</code>
      * set in the constructor.  This <code>Connection</code> must be in
      * auto-commit mode or the insert will not be saved. The <code>Connection</code> is
-     * closed after the call. 
-     * 
+     * closed after the call.
+     *
      * @param sql The SQL statement to execute.
-     * 
+     *
      * @return An {@link org.apache.commons.dbutils2.BatchExecutor} for this SQL statement.
      * @throws SQLException If there are database or parameter errors.
      */
@@ -115,7 +115,7 @@ public class QueryRunner {
      *
      * @param conn The connection to use for the batch call.
      * @param sql The SQL statement to execute.
-     * 
+     *
      * @return An {@link org.apache.commons.dbutils2.BatchExecutor} for this SQL statement.
      * @throws SQLException If there are database or parameter errors.
      */
@@ -125,11 +125,11 @@ public class QueryRunner {
 
     /**
      * Creates an {@link org.apache.commons.dbutils2.BatchExecutor} for the given SQL statement and connection.
-     * 
+     *
      * @param conn The connection to use for the batch call.
      * @param closeConn True if the connection should be closed, false otherwise.
      * @param sql The SQL statement to execute.
-     * 
+     *
      * @return An {@link org.apache.commons.dbutils2.BatchExecutor} for this SQL statement.
      * @throws SQLException If there are database or parameter errors.
      */
@@ -144,7 +144,7 @@ public class QueryRunner {
             }
             throw new SQLException("Null SQL statement");
         }
-        
+
         return new BatchExecutor(conn, sql, closeConn);
     }
 
@@ -153,10 +153,10 @@ public class QueryRunner {
      * <code>Connection</code> is retrieved from the <code>DataSource</code>
      * set in the constructor.  This <code>Connection</code> must be in
      * auto-commit mode or the insert will not be saved. The <code>Connection</code> is
-     * closed after the call. 
-     * 
+     * closed after the call.
+     *
      * @param sql The SQL statement to execute.
-     * 
+     *
      * @return An {@link org.apache.commons.dbutils2.QueryExecutor} for this SQL statement.
      * @throws SQLException If there are database or parameter errors.
      */
@@ -167,10 +167,10 @@ public class QueryRunner {
     /**
      * Creates an {@link org.apache.commons.dbutils2.QueryExecutor} for the given SQL statement and connection.
      * The connection is <b>NOT</b> closed after execution.
-     * 
+     *
      * @param conn The connection to use for the update call.
      * @param sql The SQL statement to execute.
-     * 
+     *
      * @return An {@link org.apache.commons.dbutils2.QueryExecutor} for this SQL statement.
      * @throws SQLException If there are database or parameter errors.
      */
@@ -180,11 +180,11 @@ public class QueryRunner {
 
     /**
      * Creates an {@link org.apache.commons.dbutils2.QueryExecutor} for the given SQL statement and connection.
-     * 
+     *
      * @param conn The connection to use for the query call.
      * @param closeConn True if the connection should be closed, false otherwise.
      * @param sql The SQL statement to execute.
-     * 
+     *
      * @return An {@link org.apache.commons.dbutils2.QueryExecutor} for this SQL statement.
      * @throws SQLException If there are database or parameter errors.
      */
@@ -199,7 +199,7 @@ public class QueryRunner {
             }
             throw new SQLException("Null SQL statement");
         }
-        
+
         return new QueryExecutor(conn, sql, closeConn);
     }
 
@@ -208,10 +208,10 @@ public class QueryRunner {
      * <code>Connection</code> is retrieved from the <code>DataSource</code>
      * set in the constructor.  This <code>Connection</code> must be in
      * auto-commit mode or the insert will not be saved. The <code>Connection</code> is
-     * closed after the call. 
+     * closed after the call.
      *
      * @param sql The SQL statement to execute.
-     * 
+     *
      * @return An {@link org.apache.commons.dbutils2.UpdateExecutor} for this SQL statement.
      * @throws SQLException if a database access error occurs
      */
@@ -222,10 +222,10 @@ public class QueryRunner {
     /**
      * Creates an {@link org.apache.commons.dbutils2.UpdateExecutor} for the given SQL statement and connection.
      * The connection is <b>NOT</b> closed after execution.
-     * 
+     *
      * @param conn The connection to use for the update call.
      * @param sql The SQL statement to execute.
-     * 
+     *
      * @return An {@link org.apache.commons.dbutils2.UpdateExecutor} for this SQL statement.
      * @throws SQLException If there are database or parameter errors.
      */
@@ -235,11 +235,11 @@ public class QueryRunner {
 
     /**
      * Creates an {@link org.apache.commons.dbutils2.UpdateExecutor} for the given SQL statement and connection.
-     * 
+     *
      * @param conn The connection to use for the update call.
      * @param closeConn True if the connection should be closed, false otherwise.
      * @param sql The SQL statement to execute.
-     * 
+     *
      * @return An {@link org.apache.commons.dbutils2.UpdateExecutor} for this SQL statement.
      * @throws SQLException If there are database or parameter errors.
      */
@@ -263,8 +263,8 @@ public class QueryRunner {
      * <code>Connection</code> is retrieved from the <code>DataSource</code>
      * set in the constructor.  This <code>Connection</code> must be in
      * auto-commit mode or the insert will not be saved. The <code>Connection</code> is
-     * closed after the call. 
-     * 
+     * closed after the call.
+     *
      * @param sql The SQL statement to execute.
      *
      * @return An {@link org.apache.commons.dbutils2.InsertExecutor} for this SQL statement.
@@ -277,7 +277,7 @@ public class QueryRunner {
     /**
      * Creates an {@link org.apache.commons.dbutils2.InsertExecutor} for the given SQL and connection
      * The connection is <b>NOT</b> closed after execution.
-     * 
+     *
      * @param conn The connection to use for the query call.
      * @param sql The SQL statement to execute.
      *
@@ -290,7 +290,7 @@ public class QueryRunner {
 
     /**
      * Creates an {@link org.apache.commons.dbutils2.InsertExecutor} for the given SQL and connection.
-     * 
+     *
      * @param conn The connection to use for the insert call.
      * @param closeConn True if the connection should be closed, false otherwise.
      * @param sql The SQL statement to execute.
@@ -309,7 +309,7 @@ public class QueryRunner {
             }
             throw new SQLException("Null SQL statement");
         }
-        
+
         return new InsertExecutor(conn, sql, closeConn);
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/3535b10b/src/main/java/org/apache/commons/dbutils2/UpdateExecutor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils2/UpdateExecutor.java b/src/main/java/org/apache/commons/dbutils2/UpdateExecutor.java
index 590f069..882aa65 100644
--- a/src/main/java/org/apache/commons/dbutils2/UpdateExecutor.java
+++ b/src/main/java/org/apache/commons/dbutils2/UpdateExecutor.java
@@ -19,12 +19,24 @@ package org.apache.commons.dbutils2;
 import java.sql.Connection;
 import java.sql.SQLException;
 
-
+/**
+ * Fluent class for executing updates.
+ *
+ * @since 2.0
+ * @author William Speirs <ws...@apache.org>
+ */
 public class UpdateExecutor extends AbstractExecutor<UpdateExecutor> {
 
     private final boolean closeConn;
-    
-    public UpdateExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
+
+    /**
+     * Constructs an UpdateExecutor given a connection and SQL statement.
+     * @param conn The connection to use during execution.
+     * @param sql The SQL statement.
+     * @param closeConnection If the connection should be closed or not.
+     * @throws SQLException thrown if there is an error during execution.
+     */
+    UpdateExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
         super(conn, sql);
         this.closeConn = closeConnection;
     }

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/3535b10b/src/main/java/org/apache/commons/dbutils2/handlers/KeyedHandler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils2/handlers/KeyedHandler.java b/src/main/java/org/apache/commons/dbutils2/handlers/KeyedHandler.java
index f7fe89a..245d2e7 100644
--- a/src/main/java/org/apache/commons/dbutils2/handlers/KeyedHandler.java
+++ b/src/main/java/org/apache/commons/dbutils2/handlers/KeyedHandler.java
@@ -55,18 +55,18 @@ public class KeyedHandler<K> extends AbstractKeyedHandler<K, Map<String, Object>
      * The RowProcessor implementation to use when converting rows
      * into Objects.
      */
-    protected final RowProcessor convert;
+    private final RowProcessor convert;
 
     /**
      * The column index to retrieve key values from.  Defaults to 1.
      */
-    protected final int columnIndex;
+    private final int columnIndex;
 
     /**
      * The column name to retrieve key values from.  Either columnName or
      * columnIndex will be used but never both.
      */
-    protected final String columnName;
+    private final String columnName;
 
     /**
      * Creates a new instance of KeyedHandler.  The value of the first column
@@ -139,8 +139,8 @@ public class KeyedHandler<K> extends AbstractKeyedHandler<K, Map<String, Object>
     @Override
     protected K createKey(ResultSet rs) throws SQLException {
         return (columnName == null) ?
-               (K) rs.getObject(columnIndex) :
-               (K) rs.getObject(columnName);
+                (K) rs.getObject(columnIndex) :
+                    (K) rs.getObject(columnName);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/3535b10b/src/main/java/org/apache/commons/dbutils2/wrappers/SqlNullCheckedResultSet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils2/wrappers/SqlNullCheckedResultSet.java b/src/main/java/org/apache/commons/dbutils2/wrappers/SqlNullCheckedResultSet.java
index 7868e66..53e5a95 100644
--- a/src/main/java/org/apache/commons/dbutils2/wrappers/SqlNullCheckedResultSet.java
+++ b/src/main/java/org/apache/commons/dbutils2/wrappers/SqlNullCheckedResultSet.java
@@ -253,7 +253,7 @@ public class SqlNullCheckedResultSet implements InvocationHandler {
      * @return the value
      */
     public Date getNullDate() {
-        return this.nullDate;
+        return new Date(this.nullDate.getTime());
     }
 
     /**
@@ -353,7 +353,7 @@ public class SqlNullCheckedResultSet implements InvocationHandler {
      * @return the value
      */
     public Timestamp getNullTimestamp() {
-        return this.nullTimestamp;
+        return new Timestamp(this.nullTimestamp.getTime());
     }
 
     /**
@@ -380,7 +380,7 @@ public class SqlNullCheckedResultSet implements InvocationHandler {
      */
     @Override
     public Object invoke(Object proxy, Method method, Object[] args)
-        throws Throwable {
+            throws Throwable {
 
         Object result = method.invoke(this.rs, args);
 
@@ -389,8 +389,8 @@ public class SqlNullCheckedResultSet implements InvocationHandler {
         // Check nullMethod != null first so that we don't call wasNull()
         // before a true getter method was invoked on the ResultSet.
         return (nullMethod != null && this.rs.wasNull())
-            ? nullMethod.invoke(this, (Object[]) null)
-            : result;
+                ? nullMethod.invoke(this, (Object[]) null)
+                        : result;
     }
 
     /**
@@ -492,7 +492,7 @@ public class SqlNullCheckedResultSet implements InvocationHandler {
      * @param nullDate the value
      */
     public void setNullDate(Date nullDate) {
-        this.nullDate = nullDate;
+        this.nullDate = nullDate != null ? new Date(nullDate.getTime()) : null;
     }
 
     /**
@@ -592,7 +592,7 @@ public class SqlNullCheckedResultSet implements InvocationHandler {
      * @param nullTimestamp the value
      */
     public void setNullTimestamp(Timestamp nullTimestamp) {
-        this.nullTimestamp = nullTimestamp;
+        this.nullTimestamp = nullTimestamp != null ? new Timestamp(nullTimestamp.getTime()) : null;
     }
 
     /**