This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

UIEditor Leerstring statt null?

Allgemeine Fragen zur Entwicklung von und mit JVx.

UIEditor Leerstring statt null?

Postby alladinbp » Tue Oct 25, 2011 10:07 am

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
alladinbp
 
Posts: 39
Joined: Tue Oct 11, 2011 2:27 pm

Re: UIEditor Leerstring statt null?

Postby Support@SIB » Tue Oct 25, 2011 10:43 am

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)
User avatar
Support@SIB
 
Posts: 353
Joined: Mon Sep 28, 2009 1:56 pm


Return to Development (DE)