Bonjour,
Est-ce qu'il est possible d'écrire une requêtte qui fait la jointure de plusieurs tables dans une entité bean?
Que dois-faire si c'est impossible?
Bonjour,
Est-ce qu'il est possible d'écrire une requêtte qui fait la jointure de plusieurs tables dans une entité bean?
Que dois-faire si c'est impossible?
Bonjour,
Quelle version des EJB utilises-tu?
Valère
Pensez au bouton
Je ne répond pas aux questions techniques par email ou MP.
Comme j'ai la meme question.. avec les
EJB3?
L'habitude est l'illusion d'un acquis imaginaire...
Mes Compos Ziks Electros:http://fishbone2k.free.fr/technorulez/news.php?id=89
Bonjour,
j'utilise EJB3 avec netbeans5.5 et sjsas9 comme serveur d'apllication.
Cordialement heriniaina1
Bonjour,
C'est tout à fait faisable, il suffit de passer par un objet wrapper qui encapsule les EJB des différentes tables à récupérer.
Par exemple, si NetBeans vous a créé les EJBs des tables TableA et TableB, alors vous pouvez créer un objet tel que le suivant:
Ensuite il faut l'utiliser dans une EJBQuery du genre
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 package mypackage; public class MyWrapper { private TableA tableA; private TableB tableB; /** Creates a new instance of MyWrapper */ public MyWrapper() { } public TableA getTableA() { return tableA; } public void setTableA(TableA tableA) { this.tableA = tableA; } public TableB getTableB() { return tableB; } public void setTableB(TableB tableB) { this.tableB = tableB; } }Et vous récupérez une liste de MyWrapper.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 String query = "SELECT new mypackage.MyWrapper(a, b) " + "FROM TableA a, TableB b " + "WHERE ${condition de jointure}" return emf.createEntityManager().createQuery(query)
Valère
Pensez au bouton
Je ne répond pas aux questions techniques par email ou MP.
Est ce qu'avec Jboss x'est la même chose?? J'utilise EclipseWTP avec un serveur JBOSS4..
L'habitude est l'illusion d'un acquis imaginaire...
Mes Compos Ziks Electros:http://fishbone2k.free.fr/technorulez/news.php?id=89
C'est du JPA pur. Pour ma part, j'utilise ce type de code sans serveur applicatif, en J2SE, avec toplink. Je ne pense pas qu'utiliser l'implémentation d'hibernate de JPA pose problème.
Valère
Pensez au bouton
Je ne répond pas aux questions techniques par email ou MP.
Bonsoir,
j'ai essaié ce que valered a dit,je fait comme suit:
-entité beans(create entity from database ):entités Stage et Theme;
-Objet wrapper qui encapsule les EJB des différentes tables à récupérer(Stage et Theme)
Et pour l'ejbql dans une sessionbean:
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 package com.entity; public class test { private Stage stage; private Theme theme; public test() { } public Stage getstage() { return stage; } public void setstage(Stage stage) { this.stage = stage; } public Theme gettheme() { return theme; } public void settheme(Theme theme) { this.theme = theme; } public test(Stage stage,Theme theme) { this.stage = stage; this.theme = theme; } }
j'ai essai avec :
mais netbeans ne connait pas createEntityManager() et je fait comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 String query = "SELECT new mypackage.MyWrapper(a, b) " + "FROM TableA a, TableB b " + "WHERE ${condition de jointure}" return emf.createEntityManager().createQuery(query)
Mais ce requête ne retourne rien,il y a erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public List lister() { String query = "SELECT new com.entity.test(a,b) " + "FROM Stage a, Theme b " + " WHERE and a.stgid=b.stgid "; Query squery =em.createQuery(query); List resultat = squery.getResultList(); return resultat; }
Que dois-je faire alors?
je vous remercie.
Cordialement heriniain_a1
Re,
Il faut que déclare un entity manager dans ta classe. Dans NetBeans, clic-droit | persistence | use entity manager et NB rajoutte tout ce qu'il faut dans ta classe.
Valère
Pensez au bouton
Je ne répond pas aux questions techniques par email ou MP.
Reponse,
voici la classe sessionbean avec l'entity manager
et je ne sait pas si dans cette classe de session que je dois rajouter tout ce qu'il faut dans ma classe dont vous avez parlé.
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 package com.session; import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; @Stateless public class NewSessionBean implements NewSessionRemote, NewSessionLocal { @PersistenceContext private EntityManager em; public NewSessionBean() { } public void persist(Object object) { // TODO: // em.persist(object); } public List listerpourevaluation() { String query = "SELECT new com.entity.test(a,c) " + "FROM Stage a, Theme c " + " WHERE and c.stgid=a.stgid "; Query squery =em.createQuery(query); List resultata = squery.getResultList(); return resultata; } }
heriniain_a1
Tu peux effectivement utiliser celle là.
Valère
Pensez au bouton
Je ne répond pas aux questions techniques par email ou MP.
Bonsoir,
j'ai deja utilisé la session NewSessionBean et je cré une classe java(utilbean) dans la partie web pour appelé la session (NewSessionBean) ,je fait comme suit:
Et en fin dans la servlet, je fait comme suit :
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 partie de la classe utilbean .... public List donnerliste(){ try { Context c = new InitialContext(); Object o = c.lookup("java:comp/env/ejb/NewSessionBean "); NewSessionRemote NewSessionBean = (NewSessionRemote)PortableRemoteObject.narrow(o,NewSessionRemote.class); List liste = NewSessionBean.listerpourevaluation(); return liste; } catch(NamingException ne){ Logger.getLogger(getClass().getName()).log(Level.SEVERE,"exception caught" ,ne); throw new RuntimeException(ne); } } ......
Et quand je fait le deploiement,il y a erreur si je fait le déboguage c'est la partie listerpourevaluation() de la session bean qui fait des erreurs.
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 partie de la servlet ........ protected void listessai(HttpServletRequest request,StageBean StageBean) throws ServletException, IOException { try { utilbean.donnerliste(); } catch (Exception e){ system.out.println("Erreur liste !"); } } .......
je ne sait pas donc si c'est ma code dans la servlet et classe utilbean qui ne fonctionne pas ou bien la requette dans la sessionbean?
Cordialement heriniain_a1
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager