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

JDBC Java Discussion :

Problème de config Glassfish


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 57
    Points : 93
    Points
    93
    Par défaut Problème de config Glassfish
    Bonjour,

    J'essaie en ce moment de passer de JBoss à Glassfish et on peut dire que je galère bien à le configurer (première fois que je dois me faire une config seul).

    Après bien des déboires, je suis en mesure de faire des appels à ma bdd MySQL via la méthode createNativeQuery de l'EntityManager. Seulement, je ne peux pas utiliser ses autres méthodes (persist bugué, syntaxe JPQL dans createQuery non reconnue, syntaxe permettant de créer des requêtes paramétrées non reconnue...). Par exemple quand je fais un persist j'obtiens :

    org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'test.sequence' doesn't exist
    Error Code: 1146
    Call: UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?
    bind => [2 parameters bound]
    Query: DataModifyQuery(name="SEQUENCE" sql="UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?")


    Voici 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
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
     
        <persistence-unit name="bdd_test_PU" transaction-type="JTA">
            <jta-data-source>jdbc/MySQLDataSource</jta-data-source>
            <class>beans.Customer</class>
            <properties>
            	 <property name="hibernate.hbm2ddl.auto" value="update"/>
                 <property name="hibernate.show_sql" value="true"/>
                 <property name="hibernate.format_sql" value="true"/>
            </properties>		
        </persistence-unit> 
    </persistence>
    La ressource MySQLDataSource a été créée à la main en suivant les instructions disponibles à cette adresse :

    http://dev.mysql.com/doc/connector-j...sh-config.html

    Remarque : j'ai créé un projet Test pour vérifier le bon fonctionnement de l'installation. Ce projet contient un EJB avec une méthode persist qui demande un EntityManager via @PersistenceContext, une servlet qui dispose de cet ejb grâce à @EJB, et un @Entity Customer. Quand je déploie l'application aucune table n'est créée dans ma base (pas même la table customer).

    Ca fait 2 jours et demi que j'essaie de faire fonctionner ça, si vous avez des pistes je suis très très très preneur, merci d'avance !

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 57
    Points : 93
    Points
    93
    Par défaut
    Je viens ENFIN de parvenir à quelque chose ! Pour info, petit résumé de ce que j'ai eu à changer.

    Dans mon bean Customer, j'avais utilisé GenerationType.AUTO (qui fonctionnait sur mon précédent projet avec JBoss et HSQL), j'ai modifié en GenerationType.IDENTITY.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long id;
    Dans mon EJB, il n'aimait pas la syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    em.createQuery("select c from beans.Customer c")
    qui là encore fonctionnait dans mon projet. J'ai retiré 'beans.' et ça marche... Je pense que j'aurai encore des soucis mais pour l'instant je peux recommencer à avancer, cela dit j'aimerais bien que quelqu'un m'explique pourquoi ces bouts de code ne sont pas portables ! C'est quand même regrettable je trouve, j'ai perdu beaucoup de temps avec des trucs de ce genre juste parce que j'ai changé de bdd et de serveur =(

    Par ailleurs, le déploiement ne crée toujours pas automatiquement les tables (j'ai rajouté un bean Dish annoté par @Entity, l'ai également ajouté dans persistence.xml, mais rien n'y fait), c'est assez pénible.

    EDIT (résolu) : J'ai recommencé à chercher une solution au problème de création automatique des tables, et en remplaçant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <property name="hibernate.hbm2ddl.auto" value="update"/>
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <property name="eclipselink.ddl-generation" value="create-tables" />
    <property name="eclipselink.ddl-generation.output-mode" value="database" />
    ça fonctionne. Voilà donc ma configuration a priori terminée, même si je ne comprends pas toujours pourquoi il fallait changer quelques bouts de code pour migrer et surtout, à quoi cela correspond.

  3. #3
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Bonjour,

    Je n'ai jamais utilisé MySQL mais pour PostgreSQL il faut avoir un SEQUENCE dans la base de données qui se charge de gérer l'insertion des données. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @Id
        @Basic(optional = false)
        @GeneratedValue(strategy = GenerationType.AUTO, generator = "article_idarticle_seq")
        @SequenceGenerator(name = "article_idarticle_seq", sequenceName = "article_idarticle_seq", allocationSize = 1)
        @Column(name = "idarticle")
        private Integer idarticle;
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

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

Discussions similaires

  1. Problème de config GlassFish ?
    Par crepy dans le forum Glassfish et Payara
    Réponses: 4
    Dernier message: 07/09/2010, 18h23
  2. Problème de config SAMBA/DB2 sur AIX
    Par ALHER dans le forum DB2
    Réponses: 1
    Dernier message: 23/08/2006, 15h54
  3. [Configuration] Problème de config (php.ini)
    Par artotal dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 17/08/2006, 00h54
  4. [Struts] [Tomcat] problème struts-config
    Par danyboy85 dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 10/02/2006, 14h50
  5. [eclipse] [jonas] problèmes de config
    Par sylvanians dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 28/09/2004, 09h15

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