IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

Trim des valeurs


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut Trim des valeurs
    Bonjour,

    j'ai un petit problème avec les champs de type CHAR.
    En effet, dans la base de données les chaines sont enregistrées dans des champs de type CHAR (et ce n'est pas possible de changer cela), ce qui pose problème lors de la récupération des données puisque je suis obligé de trimer toutes les valeurs !

    J'ai dont tenté d'ajouter un entity-listener qui effectue l'action en postLoad et c'est la qu'est le problème, en fait le framework considère que l'entity est modifier après cette action !
    J'ai donc toute mes entities modifier lors des select

    Quelqu'un a une idée de comment contourner ce problème ou un autre moyen de trimer mes entities sans qu'elles soient considérées comme modifiées?

    Merci d'avance
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut
    un trigger sur le serveur de la base de données qui déclenche après le "select" . Le trigger faisant le "trim" des char

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par plawyx Voir le message
    un trigger sur le serveur de la base de données qui déclenche après le "select" . Le trigger faisant le "trim" des char
    Un trigger en lecture... un nouveau concept ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je pense que tu as 2 solutions :
    - passer par un DTO
    - détacher ton entity avant de faire les trim().

    Ce qui est certain, c'est que tant que ton entity est "attaché" à l'entity manager, toutes les modifications effectuées sur un attribut de l'entity feront que le changement sera persisté.
    Personnellement, je préconiserais le DTO...

    Sinon, il y a les bidouilles genre passer par des champs @Transient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    class UnObjet
    {
       private Long uid;
       private String nom;
       @Transient private String nom2;
     
       public String getNom()
       {
          return nom;
       }
       public void setNom(String nom)
       {
          this.nom = nom;
       }
       public String getNom2()
       {
          if (nom2 == null)
          {
             nom2 = nom == null ? "" : nom.trim();
          }
          return nom2;
       }
    }
    mais ça suppose que ton application utilisatrice passe par getNom2() et pas getNom()... pas trop naturel peut-être...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Un trigger en lecture... un nouveau concept ?
    Aîe, la boulette

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Propriétés privees pour le stockage. Et un autre set de propriétés trimmees transient public pour l'usage general.

    Ou alors simplement assumer que ça contient des espaces et l'afficher comme tel.

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Puisque la question est posée dans le forum JPA, voir les annotations de javax.persistence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @PostLoad
    @PrePersist

Discussions similaires

  1. Tri des valeurs dans un DBGrid
    Par soviet dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/06/2015, 14h18
  2. [Math]Problème troncage ou arrondi sur des valeurs
    Par Carrel dans le forum Général Java
    Réponses: 6
    Dernier message: 07/10/2009, 15h11
  3. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01
  4. [SQL] Ma requête m'oblige à saisir des valeurs manuellement
    Par bossun dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 22/10/2003, 13h29
  5. Réponses: 6
    Dernier message: 04/04/2003, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo