Uploaded image for project: 'Commons DbUtils'
  1. Commons DbUtils
  2. DBUTILS-42

Object with Long or Decimal got initial zero value while database field is null

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.1
    • Fix Version/s: 1.2
    • Labels:
      None
    • Environment:

      JDK 5.0, MSSQL 2000

      Description

      While I use dbutil1.1, I got a big different implementation betweeb 1.0 and 1.1.
      Given a Java object, it has a property with Long data type; mapping to database, its table field datatype is bigint.
      If it has a record and its value is null.

      In 1.0 implementation, if I load entity, then we can see the property in Java object is also null.
      But in 1.1 implementation, the Java object will got a Long object with 0 inside.

      This behavior change does big impact if I upgrade from 1.0 to 1.1. It might make application logic fail because origional null status now become a Long(0) value to map to null value in database.

      I suggest to change it back. If null value in database, then mapped Java object should be null as well, not new a Long(0) to be a initial value.

      Below is the code snapshot I used to execute query, and I use jTDS 1.2 as JDBC driver

      public List<E> executePreparedQuery(String sql, Object[] params, Class clazz) throws SQLException {
          
          Connection cnct = getConnection();
          QueryRunner qRunner = new QueryRunner();
          ResultSetHandler rsHandler = new BeanListHandler(clazz);
          List<E> entities = null;
          try {
          	convertDateIn(params);
          	entities = (List<E>) qRunner.query(cnct, sql, params, rsHandler);
          }
          catch (SQLException e) {
          	e.printStackTrace();
          	throw e;
          }
          finally {
          	closeConnection();
          }
          return entities;
        }
      

      Hope this helps.

        Attachments

        1. BeanProcessor-fixed.diff
          2 kB
          Julien Aymé
        2. BeanProcessorAlternativePatch.diff
          0.5 kB
          Brandon Atkinson
        3. BeanProcessor.diff
          2 kB
          Julien Aymé

          Activity

            People

            • Assignee:
              dfabulich Dan Fabulich
              Reporter:
              mattjiang Matt Jiang
            • Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: