Einfügen von Standardwerten, wenn der Spaltenwert 'none' ist und slick verwendet wird

8

Mein Problem ist einfach.

Ich habe eine Spalte seqNum: Double , die wie folgt NOT NULL DEFAULT 1 in CREATE TABLE ist:

%Vor%

Benutzer kann einen Wert für seqNum oder nicht von UI eingeben. Also ist die akzeptierende PLAY Form wie folgt:

%Vor%

Das Slick Table Schema & amp; Objekte sehen so aus:

%Vor%

Wenn ich seqNum von der UI sende, funktioniert alles einwandfrei, aber wenn None da ist, bricht es ab, dass NULL nicht in die NOT NULL-Spalte einfügen kann , was korrekt ist. Diese Frage erklärt warum.

Aber wie löst man dieses Problem mit slick ? Ich kann nicht verstehen, wo ich über None nachsehen soll. Ich erstelle & amp; Senden eines Objekts von SomeSection an insert Methode von SomeSections Object.

Ich benutze sql-server, wenn es darauf ankommt.

    
Sunil Kumar 12.02.2015, 07:10
quelle

2 Antworten

7

Die Verwendung des Standardwerts erfordert, dass der Wert überhaupt nicht eingefügt wird, statt NULL einzufügen. Das bedeutet, dass Sie eine benutzerdefinierte Projektion zum Einfügen benötigen.

people.map(_.name).insert("Chris") verwendet Standardwerte für alle anderen Felder. Die Einschränkungen der systemeigenen Tupel-Transformationen und Fall-Klassen-Transformationen von scala können dies ein wenig mühsam machen. Dinge wie Slicks HLists, Shapeless, Scala Records oder Scala XR können helfen, sind aber im Moment nicht trivial oder sehr experimentell.

    
cvogt 12.02.2015 16:04
quelle
0

Entweder erzwingen Sie das an slick übergebene Option , indem Sie es mit einem .getOrElse(theDefault) suffi- zieren, oder Sie lassen den DB NULL (von einem None -Wert) übernehmen und verwendet ihn mit einem Trigger.

    
cchantep 12.02.2015 08:53
quelle

Tags und Links