2012-02-15 8 views
8

Ho un problema passando un valore nullo a NamedParameterJdbcTemplate utilizzando MapSqlParameterSource del framework di primavera. Qualcuno sa come fare questo?Spring JdbcTemplate/NamedParameterJdbcTemplate che passa il valore null come valore di parametro

Attualmente il mio codice è:

String sql = "update person set project = :project where id = :id;"; 
MapSqlParameterSource params = new MapSqlParameterSource(); 
params.addValue("project ", null); 
params.addValue("id ", 1); 
int count = newNamedParameterJDBCTemplate().update(sql, params); 

Qui è dove ho un NullPointerException.

+0

Stai impostare la '' dataSource' per NamedParameterJDBCTemplate' che di ritorno da 'newNamedParameterJDBCTemplate()'? – Saar

+0

xSNRG, puoi condividere qual è stato il problema? La risposta di Titi è uguale al tuo codice. – bschandramohan

risposta

11

Questo è il mio codice su Spring 3,1

String sql = "update user set name = :name where id = :id"; 
    MapSqlParameterSource params = new MapSqlParameterSource(); 
    params.addValue("name", null); 
    params.addValue("id", 1); 
    namedParameterJdbcTemplate.update(sql, params); 

funziona bene. Forse una traccia di stack può essere d'aiuto?

7

In jdbc puro suo PreparedStatement.setNull (int, java.sql.Types.NULL);
Da MapSqlParameterSource api c'è

addValue(String paramName, Object value,int sqlType) 

provare fornendo java.sql.Types.NULL come SQLTYPE.

Può essere utile.

+0

Ottimo! Ho avuto un grosso errore – jrey

-1

Assicurati se un'origine dati è impostata per il tuo jdbcTemplate come qui di seguito come esempio namedParameterJdbcTemplate = new NamedParameterJdbcTemplate (dataSource);

3

V'è uno spazio extra dopo il nome del parametro:

params.addValue("project ", null); 
         ↑ 
params.addValue("id ", 1); 
        ↑ 
0

Credo che il punto e virgola è extra nel codice qui sotto:

String sql = "update person set project = :project where id = :id;"; 

Rimuovere e virgola dopo id. Dovrebbe essere come:

String sql = "update person set project = :project where id = :id"; 
Problemi correlati