Ich habe eine Tabelle in MYSQL und verwende JDBC-Vorlagen, um eine Einfügung in diese Tabelle durchzuführen.
Eine der Spalten hat einen Standardwert und ich gebe es nicht in der Map<String, Object> parameters
Map an.
Ich erhalte eine Ausnahme Column 'colName' cannot be null
.
Kann mir bitte jemand das erklären?
Danke
* Bearbeiten: Code *
%Vor%
Sie müssen die in SQL Insert angegebenen Spalten begrenzen.
Siehe SimpleJdbcInsert.usingColumns ()
Wenn Sie dies nicht tun, benötigt die SQL-Anweisung Werte für ALLE Spalten und die Standardwerte können nicht verwendet werden.
z.B. benutze
%Vor%statt
%Vor% Das Problem ist woanders: Wenn ich SimpleJdbcInsert
benutze und eine Karte mit Parametern übergebe, erwarte ich einfach, nur mit den von mir bereitgestellten Parametern die Anweisung einzufügen. Ich habe eine NOT NULL-Spalte in der Tabelle mit DEFAULT-Wert, und ich möchte es nicht angeben. Ich möchte auch nicht explizit alle Spaltennamen in usingColumns()
setzen, wie ich es gerade beim Erstellen einer Parameterkarte getan habe! Warum sollte ich es nochmal machen? Das Problem ist, dass SimpleJdbcInsert
schlauer sein und alle einzufügenden Spalten hinzufügen soll, was nicht notwendig ist. Warum erstellen Sie eine Anweisung nicht nur mit Spalten, die mit der Parameter-Map versehen sind?
Siehe: Ссылка
Sie können die Spalten, die einen Standardwert als Parameter haben, zu usingGeneratedKeyColumns()
hinzufügen.
Spaltennamen, die als Parameter dieser Methode enthalten sind, werden in der generierten INSERT
-Anweisung weggelassen.
Tags und Links sql java mysql spring jdbctemplate