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

Hibernate Java Discussion :

Comment mettre par défaut l'utf-8 quand on créé une table avec Hibernate - persistence


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 108
    Points : 56
    Points
    56
    Par défaut Comment mettre par défaut l'utf-8 quand on créé une table avec Hibernate - persistence
    Bonjour à tous, et joyeux noël

    Comme le dit le titre, j'aimerais savoir comment mettre par défaut l'utf-8 quand on créé une table avec java persistence...
    A chaque fois que je mets ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <property name="hibernate.hbm2ddl.auto" value="update" />
    En create, il me remet le charset en latin1_swedish sur toutes mes tables ...

    Y-a t'il une annotation, une modification à faire dans la librairie ou même une astuce ?

    Je vous remercie d'avance pour l'aide que vous pourriez m'apporter !

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    essayez en ajoutant ces propriétés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    hibernate.connection.charSet utf8
    hibernate.connection.useUnicode true
    ou

    en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?characterEncoding=UTF-8
    à l'URL de connection.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 108
    Points : 56
    Points
    56
    Par défaut
    Merci pour ton aide !

    Malheureusement, ça ne marche pas ...

    Voici la construction de mon fichier persistence.xml (j'ai donc ajouté le charset sans succès):

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
        <persistence-unit name="SupSTA-PU" transaction-type="RESOURCE_LOCAL">
            <provider>org.hibernate.ejb.HibernatePersistence</provider>
            <properties>
                <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
                <property name="javax.persistence.jdbc.user" value="root" />
                <property name="javax.persistence.jdbc.password" value="" />
                <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/SupSTA" />
                <property name="eclipselink.cache.shared.default" value="false"/>
                <property name="hibernate.hbm2ddl.auto" value="create" />
                <property name="hibernate.connection.useUnicode" value="true" />
                <property name="hibernate.connection.charSet" value="UTF-8" />
                <property name="hibernate.connection.charSet" value="utf8" />
                <property name="hibernate.connection.characterEncoding" value="UTF-8" />
                <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
            </properties>
        </persistence-unit>
    </persistence>

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 108
    Points : 56
    Points
    56
    Par défaut
    Bon en fait, j'ai fait quelque chose de très bête:
    J'ai créé ma table directement en utf-8, et comme ça, lorsque je persist, avec hibernate configuré en create, les tables se créent automatiquement en utf8_general_ci.

    Dernier petit problème:
    Lorsque j'ajoute une nouvelle ligne directement via phpmyadmin, pas de soucis, la ligne inséré n'a pas de problèmes avec les accents...
    Mes pages html sont bien en utf-8, mais lorsque j'ajoute une donnée via persistence manager, l'encodage rate, et les caractères spéciaux ne passent pas :/

    Voilà à quoi ressemble mon persistence.xml:
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
        <persistence-unit name="SupSTA-PU" transaction-type="RESOURCE_LOCAL">
            <provider>org.hibernate.ejb.HibernatePersistence</provider>
            <properties>
                <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
                <property name="javax.persistence.jdbc.user" value="root" />
                <property name="javax.persistence.jdbc.password" value="" />
                <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/SupSTA" />
                <property name="eclipselink.cache.shared.default" value="false"/>
                <property name="hibernate.hbm2ddl.auto" value="update" />
                <property name="hibernate.connection.CharSet" value="utf8" />
                <property name="hibernate.connection.useUnicode" value="true" />
                <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
            </properties>
        </persistence-unit>
    </persistence>

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/SupSTA?characterEncoding=UTF-8" />

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 108
    Points : 56
    Points
    56
    Par défaut
    J'avais déjà essayé, et sans succès non plus :/

  7. #7
    Membre du Club Avatar de mahbool
    Inscrit en
    Octobre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 27
    Points : 45
    Points
    45
    Par défaut
    essaye de voir avec ce lien et tien moi au courant s'il y' a du nouveau

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 108
    Points : 56
    Points
    56
    Par défaut
    Je ne suis pas sur mon PC qui contient les sources actuellement, mais en visionnant l'autre post, j'ai l'impression que ce n'est pas le même problème dont il s'agit ...

    Pour ma part:
    - Mes valeurs envoyées en POST, et récupérées par le servlet, sont parfaitement encodées en UTF-8.
    - Lorsque j'insert une nouvelle ligne via phpmyadmin dans une table, l'utf8 passe parfaitement, les accents sont parfaitement visible (ce qui n'est pas le cas dans l'autre post)

    Mais, lorsque j'utilise persistence manager pour ajouter une nouvelle ligne, voir même pour faire un update, il y a un problème au niveau des caractères spéciaux, et j'obtiens donc des "é".

    C'est donc à ce moment là que cela pose problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    /* [...] */
    EntityManager em = emf.createEntityManager();
            try {
                em.getTransaction().begin();
                em.persist(sta);
                em.getTransaction().commit();
                result = sta;
            } finally {
                if (em.getTransaction().isActive()) {
                    em.getTransaction().rollback();
                }
                em.close();
    /* [...] */
            }
    Merci pour ton aide en tout cas .

  9. #9
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    Citation Envoyé par Arget Voir le message
    Mais, lorsque j'utilise persistence manager pour ajouter une nouvelle ligne, voir même pour faire un update, il y a un problème au niveau des caractères spéciaux, et j'obtiens donc des "é".
    si vous obtenez "é" c'est que les données en base sont bien en UTF-8 mais que "celui" qui les affiche les interprète autrement (probablement en ISO-8859-1).

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 108
    Points : 56
    Points
    56
    Par défaut
    Pourtant mon fichier jsp commence par cela, ça devrait convenir non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <!DOCTYPE html>
    <html>
        <head>
     
     
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     
    <!-- [...] -->

  11. #11
    Membre du Club Avatar de mahbool
    Inscrit en
    Octobre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 27
    Points : 45
    Points
    45
    Par défaut
    salut, en fait j'ai trouvé des liens intéressant j’espère que cette fois ci vont etre les bons les voila : lien 1 , lien 2 et lien 3 en faite il s'agit de la configuration d’encodage avant et après la connexion pour toutes les opérations (insert , update et read)

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 108
    Points : 56
    Points
    56
    Par défaut
    Bon bah j'aurais tout essayé, et ça ne marche toujours pas ... Incompréhensible quand même !

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 108
    Points : 56
    Points
    56
    Par défaut
    Ouf, j'ai enfin trouvé !

    Un bon tutoriel, qui explique bien tout quoi

    La solution s'est faite dans un filtre tout simplement, donc la toute première partie visible dans ce lien:


    Merci à tous en tout cas pour l'aide et les coups de pouce que vous avez pu m'apporter .

    Bonne soirée et joyeuses fêtes !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. LAMP - Mettre par défaut innoDB
    Par Ang3x dans le forum Installation
    Réponses: 0
    Dernier message: 09/10/2008, 10h35
  2. Comment ajouter par défaut une valeur dans un champ?
    Par zouloute dans le forum Access
    Réponses: 2
    Dernier message: 04/03/2008, 07h53
  3. [phpMyAdmin] Comment mettre par défaut la date courante à un champ (DATETIME) sous phpMyAdmin ?
    Par vandeyy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 11
    Dernier message: 31/01/2007, 11h16
  4. mettre par défaut un champ dans liste déroulante
    Par zouzou1010 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 09/05/2006, 14h12
  5. Réponses: 6
    Dernier message: 16/11/2005, 09h34

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