11
votes

Spring JDBCtemplate / NamedParameterjdbCtemplate Passage de la valeur NULL comme valeur de paramètre

J'ai un problème qui passe une valeur nulle à NamedParameterjdbctemplate à l'aide de MapSQLParameTersource de la structure de printemps. Tout le monde sait comment faire cela?

Actuellement, mon code est le suivant: P>

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);


2 commentaires

Êtes-vous défini le DataSource pour NamedParameterJDBCTELPLET qui revenant à partir de NEWNYDPARAMETJDBCLETPLET () ?


XSNRG, pouvez-vous partager quel était le problème? La réponse par Titi est la même que celle de votre code.


6 Réponses :


12
votes

dans pure jdbc c'est préparé stitaité.setnull (int, java.sql.types.null);
De MapsqlParameTersource API, il y a xxx

essayez de fournir java.sql.types.null comme sqltype.

peut être cela aide.


0 commentaires

16
votes

Ceci est mon code sur le printemps 3.1 xxx

fonctionne bien. Peut-être qu'une trace de pile pourrait aider?


0 commentaires

-1
votes

Assurez-vous que si DataSource est défini pour votre plaque JDBCTTEM comme ci-dessous. NamedParameterjdbCtemplate = Nouveau NamedParameterjdbCtemplate (DataSource);


0 commentaires

8
votes

Il y a un espace supplémentaire après le nom du paramètre: xxx


0 commentaires

-1
votes

Je pense que Semicolon est extra dans le code ci-dessous:

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


0 commentaires

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

// ISSUE: Map.of doesn't support null values, but HashMap does:
Map<String, Object> params = new HashMap<>();
params.put("project", null);
params.put("id", 1);
int count = newNamedParameterJDBCTemplate().update(sql, params);

0 commentaires