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 :

Problème à la compilation du module EJB


Sujet :

JPA Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Problème à la compilation du module EJB
    Bonjour à tous,

    Ca fait un moment que je tourne en rond. Je n'arrive pas à m'en sortir.

    • J'ai créé une Appli Entreprise + EJBModule + WARModule (avec framework struts)
    • J'ai créé un simple projet java qui contient les entités générées à partir d'entité de base de données + ajout de librairie Persistence
    • J'ai ajouté le jar du projet aux 2 modules dans leurs librairies respectives
    • J'ai généré automatiquement les JPAController à partir des entites
    • J'ai rajouté des ejb
    • J'ai créé les action/forms struts puis les jsp

    Ca marche j'ai accès à mes JSP les données affichées viennent de la BDD

    Mais j'ai 2 soucis

    1- Je ne peux pas clean&build les EntiteJPAController généré auto car il ya une erreur

    error: cannot find symbol CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
    symbol: method getCriteriaBuilder()
    location: variable em of type EntityManager

    2- Je n'arrive pas à faire de requete d'insertion dans la BDD voici l'erreur :

    java.lang.IllegalStateException: ERROR: only SessionBeans with bean-managed transactionscan obtain UserTransaction


    Je suis désolé j'ai trop la sensation d'être un newbie sur les 2erreurs mais j'y arrive pas :'(


    IDE :Netbeans 7.0.1
    JDK : 1.7
    JEE version : JEE6
    JPA lib : Persistence -ejb3-persistence.jar
    Persistence Unit : EclipseLink (JPA2.0)
    OS : Windows Seven

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 140
    Points
    140
    Par défaut
    Salut

    Pour le 1), j'ai pas d'idée me faudrait un schéma de l'archi des projets, de tête ca marche pas :p.
    Pour le 2) on dirait un problème de transaction récupérer à la main alors que seul les EJB BMT peuvent le récupérer et je supposerai que ton EJB est en CMT.

    Est-ce que dans le code il y a un "UserTransaction" ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Pour le 1) c'est ça que tu me demandes ?



    voici un log de l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Compiling 13 source files to path\venteNew2-ejb\build\classes
    path\ArticleJpaController.java:211: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    path\ArticleJpaController.java:213: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
    Pour le 2) voici le code qui produit l'erreur : insertArticle(Article a)
    effectivement j'essaie de faire un injection de dépendance avec annotation @Resource pour récupérer le context du serveur

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package fr.ipst.vente.metier.ejbs;
     
    import fr.ipst.vente.metier.daos.ArticleJpaController;
    import fr.ipst.vente.metier.entites.Article;
    import java.util.List;
    import javax.annotation.Resource;
    import javax.ejb.EJBContext;
    import javax.ejb.Stateful;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.Persistence;
    import javax.transaction.UserTransaction;
     
    /**
     *
     * @author Denis
     */
    @Stateful
    public class EJBCatalogue implements EJBCatalogueLocal {
     
        @Resource
        private EJBContext context;
     
        @Override
        public List<Article> getCatalogue() throws Throwable {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("venteNew2-ejbPU");
            ArticleJpaController daoa = new ArticleJpaController(null, emf);
            List<Article> liste = daoa.findArticleEntities();
            return liste;
        }
     
        // Add business logic below. (Right-click in editor and choose
        // "Insert Code > Add Business Method")
        @Override
        public Article getArticle(String ref) throws Throwable {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("venteNew2-ejbPU");
            ArticleJpaController daoa = new ArticleJpaController(null, emf);
            Article a = daoa.findArticle(ref);
            return a;
        }
     
        @Override
        public void insertArticle(Article a) throws Throwable {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("venteNew2-ejbPU");
            UserTransaction utx = context.getUserTransaction();
            ArticleJpaController daoa = new ArticleJpaController(utx, emf);
            daoa.create(a);
        }
     
     
    }

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 140
    Points
    140
    Par défaut
    Pour le 1), exactement , il me faudait aussi le projet ear
    Pour le 2) Les EJBs sont transactionnels par nature, ce qui signifie qu'il n'y a pas besoin de gérer les transactions, et qu'il est même interdit de le faire (comme le dit ton erreur)

    il existe cependant deux type d'EJB :
    - CMT : Les transactions sont faite toutes seul et interdiction de les gérer seul.
    - BMT : Où il faut gérer soit même les transactions à la main (ce qui est fait dans le cas présent)

    Donc si il faut gérer les transactions à la main, alors il faut ajouter l'annotation suivante a ton EJB :@TransactionManagement(value= TransactionManagementType.BEAN)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Voilà avec le ear c'est bien ça ?


    pour le 2)
    Je comprend pas CMT ce que cela veut dire
    Et dans le cas de CMT comment faire une transaction d'insertion dans la BDD ?

    En tout cas merci beaucoup pour ton aide et ton temps

    EDIT : j'ai testé l'annotation @TransactionManagement(value= TransactionManagementType.BEAN) => plus d'erreur meme si l'insertion n'est pas faites héhé !!! je peux enfin bosser >.<

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 140
    Points
    140
    Par défaut
    Je pense que la transaction que tu récupères n'est pas lié à l'entityManagerFactory que tu crées.
    Pour récupérer un EntityManagerFactory dans un EJB sans le créer (pas injection donc) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	@PersistenceUnit(unitName="venteNew2-ejbPU")
    	private EntityManagerFactory emf;
    Et pour la transaction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	@Resource
    	private UserTransaction userTransaction;
    Tu peux aussi récupérer directement un EntityManager via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	@PersistenceContext(unitName="venteNew2-ejbPU")
    	private EntityManager em;
    Je n'ai testé les BMT qu'avec un EntityManager par contre, je sais pas ce que cela va donner avec un EntityManagerFactory

    Pour le 1) je sèche complétement, j'ai pas assez d'information comme ca

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Alors là chapeau bas , j'ai réussi à faire l'insertion à la minute ou j'ai fais ce que tu as dit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        @PersistenceUnit(unitName = "venteNew2-ejbPU")
        private EntityManagerFactory emf;
        @Resource
        private SessionContext context;
    Je ne marque pas le sujet résolu car j'aimerai bien réussir à compiler mes ejb

    EN tout cas un gros merci !!! ))

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 140
    Points
    140
    Par défaut
    Pour la compilation est EJB, donne moi la sortie complète de la compilation je verrai ce que je peux faire avec :p

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
     
    init:
    undeploy-clean:
    deps-clean:
    venteNew2_entites.init:
    venteNew2_entites.deps-clean:
    Updating property file: C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\build\built-clean.properties
    Deleting directory C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\build
    venteNew2_entites.clean:
    Deleting directory C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\build
    Deleting directory C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\dist
    clean:
    init:
    venteNew2_entites.init:
    venteNew2_entites.deps-jar:
    Created dir: C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\build
    Updating property file: C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\build\built-jar.properties
    Created dir: C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\build\classes
    Created dir: C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\build\empty
    Created dir: C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\build\generated-sources\ap-source-output
    Compiling 7 source files to C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\build\classes
    Copied 1 empty directory to 1 empty directory under C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\build\classes
    venteNew2_entites.compile:
    Created dir: C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\dist
    Copying 1 file to C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\build
    Copy libraries to C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\dist\lib.
    Building jar: C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\dist\venteNew2_entites.jar
    To run this application from the command line without Ant, try:
    java -jar "C:\Users\Denis\Documents\BronxJEE\venteNew2_entites\dist\venteNew2_entites.jar"
    venteNew2_entites.jar:
    deps-jar:
    Created dir: C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\build\classes
    Copying 3 files to C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\build\classes\META-INF
    Created dir: C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\build\empty
    Created dir: C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\build\generated-sources\ap-source-output
    Compiling 13 source files to C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\build\classes
    Note: Creating static metadata factory ...
    Note: Building metadata class for round element: fr.ipst.vente.metier.daos.FournisseurJpaController
    Note: Building metadata class for round element: fr.ipst.vente.metier.ejbs.EJBCatalogue
    Note: Building metadata class for round element: fr.ipst.vente.metier.daos.exceptions.RollbackFailureException
    Note: Building metadata class for round element: fr.ipst.vente.metier.daos.exceptions.NonexistentEntityException
    Note: Building metadata class for round element: fr.ipst.vente.metier.daos.FactureJpaController
    Note: Building metadata class for round element: fr.ipst.vente.metier.daos.ClientJpaController
    Note: Building metadata class for round element: fr.ipst.vente.metier.daos.exceptions.PreexistingEntityException
    Note: Building metadata class for round element: fr.ipst.vente.metier.daos.LigneFactureJpaController
    Note: Building metadata class for round element: fr.ipst.vente.metier.daos.ArticleJpaController
    Note: Building metadata class for round element: fr.ipst.vente.metier.daos.EncoursJpaController
    Note: Building metadata class for round element: fr.ipst.vente.metier.daos.exceptions.IllegalOrphanException
    Note: Building metadata class for round element: fr.ipst.vente.metier.daos.TraiteJpaController
    Note: Optional file was not found: META-INF/orm.xml continuing with generation.
    Note: Optional file was not found: META-INF/eclipselink-orm.xml continuing with generation.
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\ArticleJpaController.java:211: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\ArticleJpaController.java:213: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\ArticleJpaController.java:236: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\ArticleJpaController.java:238: error: cannot find symbol
                cq.select(em.getCriteriaBuilder().count(rt));
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\ArticleJpaController.java:239: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\ClientJpaController.java:230: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\ClientJpaController.java:232: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\ClientJpaController.java:255: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\ClientJpaController.java:257: error: cannot find symbol
                cq.select(em.getCriteriaBuilder().count(rt));
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\ClientJpaController.java:258: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\EncoursJpaController.java:188: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\EncoursJpaController.java:190: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\EncoursJpaController.java:213: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\EncoursJpaController.java:215: error: cannot find symbol
                cq.select(em.getCriteriaBuilder().count(rt));
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\EncoursJpaController.java:216: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\FactureJpaController.java:259: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\FactureJpaController.java:261: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\FactureJpaController.java:284: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\FactureJpaController.java:286: error: cannot find symbol
                cq.select(em.getCriteriaBuilder().count(rt));
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\FactureJpaController.java:287: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\FournisseurJpaController.java:178: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\FournisseurJpaController.java:180: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\FournisseurJpaController.java:203: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\FournisseurJpaController.java:205: error: cannot find symbol
                cq.select(em.getCriteriaBuilder().count(rt));
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\FournisseurJpaController.java:206: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\LigneFactureJpaController.java:184: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\LigneFactureJpaController.java:186: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\LigneFactureJpaController.java:209: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\LigneFactureJpaController.java:211: error: cannot find symbol
                cq.select(em.getCriteriaBuilder().count(rt));
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\LigneFactureJpaController.java:212: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\TraiteJpaController.java:188: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\TraiteJpaController.java:190: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\TraiteJpaController.java:213: error: cannot find symbol
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\TraiteJpaController.java:215: error: cannot find symbol
                cq.select(em.getCriteriaBuilder().count(rt));
      symbol:   method getCriteriaBuilder()
      location: variable em of type EntityManager
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\src\java\fr\ipst\vente\metier\daos\TraiteJpaController.java:216: error: method createQuery in interface EntityManager cannot be applied to given types;
                Query q = em.createQuery(cq);
      required: String
      found: CriteriaQuery
      reason: actual argument CriteriaQuery cannot be converted to String by method invocation conversion
    Note: Some input files use unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    35 errors
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\nbproject\build-impl.xml:505: The following error occurred while executing this line:
    C:\Users\Denis\Documents\BronxJEE\venteNew2\venteNew2-ejb\nbproject\build-impl.xml:209: Compile failed; see the compiler error output for details.
    BUILD FAILED (total time: 3 seconds)

    voila :p

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 140
    Points
    140
    Par défaut
    est-ce possible d'avoir aussi le code de ArticleJpaController.java ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    sans probleme par contre c'est tout généré grace à l'API JPA , je n'ai rien rajouté

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package fr.ipst.vente.metier.daos;
     
    import fr.ipst.vente.metier.daos.exceptions.NonexistentEntityException;
    import fr.ipst.vente.metier.daos.exceptions.PreexistingEntityException;
    import fr.ipst.vente.metier.daos.exceptions.RollbackFailureException;
    import fr.ipst.vente.metier.entites.Article;
    import java.io.Serializable;
    import java.util.List;
    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.Query;
    import javax.persistence.EntityNotFoundException;
    import javax.persistence.criteria.CriteriaQuery;
    import javax.persistence.criteria.Root;
    import fr.ipst.vente.metier.entites.Fournisseur;
    import fr.ipst.vente.metier.entites.LigneFacture;
    import java.util.ArrayList;
    import java.util.Collection;
    import javax.transaction.UserTransaction;
     
    /**
     *
     * @author Denis
     */
    public class ArticleJpaController implements Serializable {
     
        public ArticleJpaController(UserTransaction utx, EntityManagerFactory emf) {
            this.utx = utx;
            this.emf = emf;
        }
        private UserTransaction utx = null;
        private EntityManagerFactory emf = null;
     
        public EntityManager getEntityManager() {
            return emf.createEntityManager();
        }
     
        public void create(Article article) throws PreexistingEntityException, RollbackFailureException, Exception {
            if (article.getLigneFactureCollection() == null) {
                article.setLigneFactureCollection(new ArrayList<LigneFacture>());
            }
            EntityManager em = null;
            try {
                utx.begin();
                em = getEntityManager();
                Fournisseur fournisseur = article.getFournisseur();
                if (fournisseur != null) {
                    fournisseur = em.getReference(fournisseur.getClass(), fournisseur.getNum());
                    article.setFournisseur(fournisseur);
                }
                Collection<LigneFacture> attachedLigneFactureCollection = new ArrayList<LigneFacture>();
                for (LigneFacture ligneFactureCollectionLigneFactureToAttach : article.getLigneFactureCollection()) {
                    ligneFactureCollectionLigneFactureToAttach = em.getReference(ligneFactureCollectionLigneFactureToAttach.getClass(), ligneFactureCollectionLigneFactureToAttach.getNumLigne());
                    attachedLigneFactureCollection.add(ligneFactureCollectionLigneFactureToAttach);
                }
                article.setLigneFactureCollection(attachedLigneFactureCollection);
                em.persist(article);
                if (fournisseur != null) {
                    fournisseur.getArticleCollection().add(article);
                    fournisseur = em.merge(fournisseur);
                }
                for (LigneFacture ligneFactureCollectionLigneFacture : article.getLigneFactureCollection()) {
                    Article oldRefArticleOfLigneFactureCollectionLigneFacture = ligneFactureCollectionLigneFacture.getRefArticle();
                    ligneFactureCollectionLigneFacture.setRefArticle(article);
                    ligneFactureCollectionLigneFacture = em.merge(ligneFactureCollectionLigneFacture);
                    if (oldRefArticleOfLigneFactureCollectionLigneFacture != null) {
                        oldRefArticleOfLigneFactureCollectionLigneFacture.getLigneFactureCollection().remove(ligneFactureCollectionLigneFacture);
                        oldRefArticleOfLigneFactureCollectionLigneFacture = em.merge(oldRefArticleOfLigneFactureCollectionLigneFacture);
                    }
                }
                utx.commit();
            } catch (Exception ex) {
                try {
                    utx.rollback();
                } catch (Exception re) {
                    throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
                }
                if (findArticle(article.getReference()) != null) {
                    throw new PreexistingEntityException("Article " + article + " already exists.", ex);
                }
                throw ex;
            } finally {
                if (em != null) {
                    em.close();
                }
            }
        }
     
        public void edit(Article article) throws NonexistentEntityException, RollbackFailureException, Exception {
            EntityManager em = null;
            try {
                utx.begin();
                em = getEntityManager();
                Article persistentArticle = em.find(Article.class, article.getReference());
                Fournisseur fournisseurOld = persistentArticle.getFournisseur();
                Fournisseur fournisseurNew = article.getFournisseur();
                Collection<LigneFacture> ligneFactureCollectionOld = persistentArticle.getLigneFactureCollection();
                Collection<LigneFacture> ligneFactureCollectionNew = article.getLigneFactureCollection();
                if (fournisseurNew != null) {
                    fournisseurNew = em.getReference(fournisseurNew.getClass(), fournisseurNew.getNum());
                    article.setFournisseur(fournisseurNew);
                }
                Collection<LigneFacture> attachedLigneFactureCollectionNew = new ArrayList<LigneFacture>();
                for (LigneFacture ligneFactureCollectionNewLigneFactureToAttach : ligneFactureCollectionNew) {
                    ligneFactureCollectionNewLigneFactureToAttach = em.getReference(ligneFactureCollectionNewLigneFactureToAttach.getClass(), ligneFactureCollectionNewLigneFactureToAttach.getNumLigne());
                    attachedLigneFactureCollectionNew.add(ligneFactureCollectionNewLigneFactureToAttach);
                }
                ligneFactureCollectionNew = attachedLigneFactureCollectionNew;
                article.setLigneFactureCollection(ligneFactureCollectionNew);
                article = em.merge(article);
                if (fournisseurOld != null && !fournisseurOld.equals(fournisseurNew)) {
                    fournisseurOld.getArticleCollection().remove(article);
                    fournisseurOld = em.merge(fournisseurOld);
                }
                if (fournisseurNew != null && !fournisseurNew.equals(fournisseurOld)) {
                    fournisseurNew.getArticleCollection().add(article);
                    fournisseurNew = em.merge(fournisseurNew);
                }
                for (LigneFacture ligneFactureCollectionOldLigneFacture : ligneFactureCollectionOld) {
                    if (!ligneFactureCollectionNew.contains(ligneFactureCollectionOldLigneFacture)) {
                        ligneFactureCollectionOldLigneFacture.setRefArticle(null);
                        ligneFactureCollectionOldLigneFacture = em.merge(ligneFactureCollectionOldLigneFacture);
                    }
                }
                for (LigneFacture ligneFactureCollectionNewLigneFacture : ligneFactureCollectionNew) {
                    if (!ligneFactureCollectionOld.contains(ligneFactureCollectionNewLigneFacture)) {
                        Article oldRefArticleOfLigneFactureCollectionNewLigneFacture = ligneFactureCollectionNewLigneFacture.getRefArticle();
                        ligneFactureCollectionNewLigneFacture.setRefArticle(article);
                        ligneFactureCollectionNewLigneFacture = em.merge(ligneFactureCollectionNewLigneFacture);
                        if (oldRefArticleOfLigneFactureCollectionNewLigneFacture != null && !oldRefArticleOfLigneFactureCollectionNewLigneFacture.equals(article)) {
                            oldRefArticleOfLigneFactureCollectionNewLigneFacture.getLigneFactureCollection().remove(ligneFactureCollectionNewLigneFacture);
                            oldRefArticleOfLigneFactureCollectionNewLigneFacture = em.merge(oldRefArticleOfLigneFactureCollectionNewLigneFacture);
                        }
                    }
                }
                utx.commit();
            } catch (Exception ex) {
                try {
                    utx.rollback();
                } catch (Exception re) {
                    throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
                }
                String msg = ex.getLocalizedMessage();
                if (msg == null || msg.length() == 0) {
                    String id = article.getReference();
                    if (findArticle(id) == null) {
                        throw new NonexistentEntityException("The article with id " + id + " no longer exists.");
                    }
                }
                throw ex;
            } finally {
                if (em != null) {
                    em.close();
                }
            }
        }
     
        public void destroy(String id) throws NonexistentEntityException, RollbackFailureException, Exception {
            EntityManager em = null;
            try {
                utx.begin();
                em = getEntityManager();
                Article article;
                try {
                    article = em.getReference(Article.class, id);
                    article.getReference();
                } catch (EntityNotFoundException enfe) {
                    throw new NonexistentEntityException("The article with id " + id + " no longer exists.", enfe);
                }
                Fournisseur fournisseur = article.getFournisseur();
                if (fournisseur != null) {
                    fournisseur.getArticleCollection().remove(article);
                    fournisseur = em.merge(fournisseur);
                }
                Collection<LigneFacture> ligneFactureCollection = article.getLigneFactureCollection();
                for (LigneFacture ligneFactureCollectionLigneFacture : ligneFactureCollection) {
                    ligneFactureCollectionLigneFacture.setRefArticle(null);
                    ligneFactureCollectionLigneFacture = em.merge(ligneFactureCollectionLigneFacture);
                }
                em.remove(article);
                utx.commit();
            } catch (Exception ex) {
                try {
                    utx.rollback();
                } catch (Exception re) {
                    throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
                }
                throw ex;
            } finally {
                if (em != null) {
                    em.close();
                }
            }
        }
     
        public List<Article> findArticleEntities() {
            return findArticleEntities(true, -1, -1);
        }
     
        public List<Article> findArticleEntities(int maxResults, int firstResult) {
            return findArticleEntities(false, maxResults, firstResult);
        }
     
        private List<Article> findArticleEntities(boolean all, int maxResults, int firstResult) {
            EntityManager em = getEntityManager();
            try {
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
                cq.select(cq.from(Article.class));
                Query q = em.createQuery(cq);
                if (!all) {
                    q.setMaxResults(maxResults);
                    q.setFirstResult(firstResult);
                }
                return q.getResultList();
            } finally {
                em.close();
            }
        }
     
        public Article findArticle(String id) {
            EntityManager em = getEntityManager();
            try {
                return em.find(Article.class, id);
            } finally {
                em.close();
            }
        }
     
        public int getArticleCount() {
            EntityManager em = getEntityManager();
            try {
                CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
                Root<Article> rt = cq.from(Article.class);
                cq.select(em.getCriteriaBuilder().count(rt));
                Query q = em.createQuery(cq);
                return ((Long) q.getSingleResult()).intValue();
            } finally {
                em.close();
            }
        }
     
    }

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Bon, j'ai trouvé =) je viens poster la soluce ici et clore le sujet

    Alors en fait dans le projet venteNew2_entite qui contient les entité générées pour JPA j'ai ajouté une bibliotheque Persistence, Or il faut fournir une bibliothèque de glassfish , alors

    1-j'ai supprimé la bibliothèque Persistence
    2-J'ai ajouté la bibliothèque Java JEE glassfish-V3

    tout marche nikel

    Encore merci beaucoup Mr_Glopinous

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 140
    Points
    140
    Par défaut
    Nickel ca , je séchais sur le problème de compilation :p

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

Discussions similaires

  1. [JAXB] Problème de compilation Module Jaxb sur eclipse
    Par McCrazy dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 22/07/2010, 14h43
  2. EJB Session et Annotations - problèmes de compilation
    Par Jonathan13 dans le forum Java EE
    Réponses: 8
    Dernier message: 27/08/2008, 20h43
  3. problème de compilation avec module Unix
    Par gorgonite dans le forum Caml
    Réponses: 3
    Dernier message: 14/09/2007, 18h57
  4. Réponses: 5
    Dernier message: 04/07/2006, 00h11
  5. [EJB][Jonas]Problème de compilation
    Par jool dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 06/02/2005, 17h34

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