Warum verwendet JDBC-Vorlagen von Spring nicht den Standardwert der Tabelle?

8

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%
    
Gleeb 10.12.2013, 15:09
quelle

4 Antworten

11

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%     
NickJ 10.12.2013, 15:16
quelle
1

INSERT INTO mytable (1,null) ist nicht dasselbe wie INSERT INTO mytable (1) . Der Prior fügt spezifisch null ein, der später die Entscheidung an den DB übergibt (was der Standardwert wäre). Spring JDBC macht das erstere.

    
CodeChimp 10.12.2013 15:15
quelle
1

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: Ссылка

    
Krzysztof Wolny 03.12.2014 08:37
quelle
0

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.

    
Doron Gold 29.01.2018 12:02
quelle

Tags und Links