commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Julien Aymé (JIRA) <>
Subject [jira] Commented: (DBUTILS-42) Object with Long or Decimal got initial zero value while database field is null
Date Tue, 28 Oct 2008 21:42:44 GMT


Julien Aymé commented on DBUTILS-42:

First, I agree with Brandon, my patch would definitely return null even if the bean property
is a primitive type, so my patch would break some code later.
I will submit a corrected version of mine, which will not return null when the bean property
is a primitive type.

Then, I looked at Brandon patch:
it fixes this issue, it is simpler/smaller than mine, so the choice is up to the commiter

> Object with Long or Decimal got initial zero value while database field is null
> -------------------------------------------------------------------------------
>                 Key: DBUTILS-42
>                 URL:
>             Project: Commons DbUtils
>          Issue Type: Improvement
>    Affects Versions: 1.1
>         Environment: JDK 5.0, MSSQL 2000
>            Reporter: Matt Jiang
>         Attachments: BeanProcessor-fixed.diff, BeanProcessor.diff, BeanProcessorAlternativePatch.diff
> 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
> 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
> {code}
> 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;
>   }
> {code}
> Hope this helps.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message