Bonjour, je cherche à créer une super classe DAO qui contiendrait des méthodes génériques du genre récupérer toutes les entres d'une table ou enregistrer une entree.
J'ai fait quelques test avec le code suivant , mais ça ne fonctionne pas.
J'ai l'impression entityManager pose problème.
Ma super classe Dao.
Mon Dao herite.
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 package dao; import java.util.Collection; ... @Stateless public class Dao<Entity> { protected EntityManager em; // Enregistrement d'un nouvel object public void creer( Entity entite ) throws DAOException { try { em.persist( entite ); } catch ( Exception e ) { throw new DAOException( e ); } } // Rechercher tout les utilisateurs public Collection<Entity> findAll( String req ) throws DAOException { Query requete = em.createNamedQuery( req ); try { List<?> liste = requete.getResultList(); return (Collection<Entity>) liste ; } catch ( NoResultException e ) { System.out.println(" ++++++++++++++++++++ ERREUR 1 ++++++++++++++++++"+e.getMessage()); throw new DAOException( e ); } catch ( Exception e ) { System.out.println(" ++++++++++++++++++++ ERREUR 2 ++++++++++++++++++"+e.getMessage()); throw new DAOException( e ); } } }
Mon entite personne
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 package dao; import java.util.Collection; ... @Stateless public class personneDao extends Dao<Personne>{ // Injection du manager, qui s'occupe de la connexion avec la BDD @PersistenceContext( unitName = "bdd_personne_PU" ) protected EntityManager em; //autres methodes... }
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 package entities; import java.util.Collection; ... @NamedQueries({ @NamedQuery( name="Personne.findFull", query="SELECT p FROM Personne p"), @NamedQuery( name="Personne.findAllValide", query="SELECT p FROM Personne p WHERE p.valide=:valide"), @NamedQuery( name="Personne.findOne", query="SELECT p FROM Personne p WHERE p.id=:id") }) @Entity @Table(name = "personne") public class Personne { @Id @Column( name = "id_personne" ) @GeneratedValue( strategy = GenerationType.IDENTITY ) protected Integer id; @Column( name = "nom" ) protected String nom ; @Column( name = "prenom" ) protected String prenom ; @Column( name = "biographie" ) protected String biographie; @Column( name = "valide" ) protected Integer valide; @ManyToMany @JoinTable (name="inter_personne_pays", joinColumns=@JoinColumn(name="id_personne"), inverseJoinColumns=@JoinColumn(name="id_pays")) protected Collection<Pays> nationalites ; @ManyToMany @JoinTable (name="inter_personne_metier", joinColumns=@JoinColumn(name="id_personne"), inverseJoinColumns=@JoinColumn(name="id_metier")) protected Collection<Metier> metiers ; public Personne(){} public Personne( String nom, String prenom,String biographie, int valide ) { this.nom = nom ; this.prenom = prenom ; this.biographie = biographie; this.valide = valide ; } ... public static String getFindAll() { return "Personne.findFull"; } }
Partager