Page 1 of 1

UIEditor Leerstring statt null?

PostPosted: Tue Oct 25, 2011 10:07 am
by alladinbp
Hallo,

wahrscheinlich ist dieses Problem leicht zu lösen. Kann man den UIEditor bzw. die Textfelder dazu bringen, einen Leerstring statt null in die Datenbank zu schreiben? Theoretisch passt das Verhalten, aber andererseits gibt es einen Unterschied zwischen "" und null. Die leichteste Lösung wäre wohl in der Datenbank das "not null" constraint zu entfernen. Aber ich hätte lieber einen Leerstring statt null.

Ich habs schon mit
dataBook.getRowDefinition().getColumnDefinition("TEST").setDefaultValue("");

und

dataBook.getRowDefinition().getColumnDefinition("TEST").setNullable(false);

versucht, hatte aber keinen Erfolg.

Danke

Re: UIEditor Leerstring statt null?

PostPosted: Tue Oct 25, 2011 10:43 am
by Support@SIB
Ein Leerstring wird immer als null gespeichert!

Das hat den Grund das viele Datenbanken bereits null anstatt eines Leerstrings speichern (z.B. Oracle, PosgreSql, usw). Bei MySql ist das nicht der Fall, aber dafür schlägt ein Unique Key Constraint auch an, wenn es einen Wert mit EmptyString und einen anderen mit Spaces gibt. Auch MSSql erlaubt Empty Strings.

JVx ist DB unabhängig und der Entwickler kann sicher sein, daß er nicht pro DB spezielle Logiken implementieren muss. Sie müssen sich also nicht darum kümmern ob null oder EmptyString geliefert wird.

Die Methode setNullable definiert nur ob der Client die Column speziell darstellt und der User einen Wert eingeben muss. Die Validierung selbst wird im Moment nicht am Client durchgeführt, wird aber in einer späteren JVx Version Einzug halten.

Der default Value definiert den Wert einer Column zum Insert Zeitpunkt und ein Leerstring ändert das Verhalten nicht.


Die entscheidende Frage ist jedoch warum Sie einen Leerstring anstatt von null benötigen. Wenn es um einen einfacheren Objekt Vergleich geht, bieten sich zwei Varianten an:

Code: Select all
CommonUtil.equals(obj1, obj2)

oder im Falle von Strings

Code: Select all
"EXPECTED".equals(obj)