2009-02-27 16 views
0

Ich habe eine EJB 3-Entity-Bean, die eine String-Eigenschaft hat, die mit folgendem Kommentar versehen ist: @Column (unique = true). Dieser Wert wird von einer JSF-Seite festgelegt.Wie entfernen nachgestellte Leerzeichen in einer Datenbankspalte?

Alles funktioniert gut, solange der Benutzer kein Leerzeichen hinzufügt, fügen Sie das Ende des Eingabefeldes hinzu. In diesem Fall werden "someName" und "someName____" nicht eindeutig behandelt und in der Datenbank gespeichert. Gibt es eine bequeme Möglichkeit, nachgestellte (und führende) Whitespaces im Anwendungsland zu entfernen, oder muss dies im Datenbankland geschehen?

Es gibt einen SQL Server 2008 am Ende der Zeile und ich verwende Hibernate für ORM.

Re-Veröffentlichen von Code zu dem Dev-Server wirkt Wunder Leider ^^

Antwort

1

Wenn Sie nicht möchten, um die Anwendung zu modifizieren, um die Zeichenfolge zu trimmen, bevor sie an den Server senden. Sie können entweder:

  • Wenn Sie gespeicherte Prozeduren verwenden, Daten einzufügen, die gespeicherte Prozedur ändern und die Zeichenfolge
  • Sie eine Trigger machen trimmen die Zeichenfolge
+0

Ich mache .trim() in dem Setter, aber dies hat keinen Einfluss – raupach

3

Da, wie Sie zu trimmen Sagen Sie in Ihrem Kommentar zu Mehrdads Antwort, dass Sie die Kontrolle über den Quellcode haben. Ich würde Ihnen dringend raten, herauszufinden, was mit Ihrem Anruf bei trim() nicht in Ordnung ist, anstatt sich einfach durchzuhacken.

Sind vielleicht tun Sie

public void setMyString(String myString) { 
    myString.trim(); 
    this.myString = myString; 
} 

wo Sie trim() ‚s Rückgabewert verwendet werden sollte? (Denken Sie daran, Java Strings unveränderlich ist.)

public void setMyString(String myString) { 
    this.myString = myString.trim(); 
} 

(Bitte fügen Sie null Kontrollen nach Bedarf.)

Verwandte Themen