2009-02-27 5 views
0

J'ai un bean EJB 3 Entity qui a une propriété String annotée avec: @Column (unique = true). Cette valeur est définie à partir d'une page JSF.Comment faire pour supprimer les espaces de fin dans une colonne de base de données?

Tout fonctionne bien tant que l'utilisateur n'ajoute pas d'espace ajouter la fin du champ de saisie. Dans ce cas, "someName" et "someName____" sont traités non uniques et sont stockés dans la base de données. Existe-t-il un moyen pratique de supprimer les espaces de fin (et de début) dans les zones d'application, ou cela doit-il être fait dans la base de données?

Il existe un SQL Server 2008 à la fin de la ligne et j'utilise Hibernate pour ORM.

republication votre code au serveur dev merveilles Désolé ^^

Répondre

1

Si vous ne voulez pas modifier l'application pour couper la chaîne avant de le soumettre au serveur. Vous pouvez:

  • Si vous utilisez des procédures stockées pour insérer des données, modifier la procédure stockée et en faire garniture la chaîne
  • Utiliser un déclencheur pour couper la chaîne
+0

Je fais .trim() dans le setter, mais cela n'a aucun effet – raupach

3

Depuis, comme vous dites dans votre commentaire à la réponse de Mehrdad, vous avez le contrôle sur le code source, je vous suggère fortement de savoir ce qui ne va pas avec votre appel à trim() au lieu de simplement hacker votre chemin à travers.

Vous faites peut-être

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

où vous devez utiliser la valeur de retour « trim()? (Rappelez-vous Java Les chaînes sont immuables.)

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

(S'il vous plaît ajouter des contrôles null si nécessaire.)

Questions connexes