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 :

Heritage et bean de session JPA


Sujet :

JPA Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 82
    Points : 50
    Points
    50
    Par défaut Heritage et bean de session JPA
    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.
    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 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
     
    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...
    }
    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
    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";
     
    	}
    }

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 136
    Points : 57
    Points
    57
    Par défaut
    Par l'annotation @Stateless à la classe Dao :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public abstract class Dao<Entity> {
       @PersistenceContext( unitName = "bdd_personne_PU" )
        protected EntityManager       em;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    @Stateless
    public class personneDao extends Dao<Personne>{
     
        //autres methodes...
    }

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/12/2008, 12h18
  2. probleme managed bean en session
    Par *alexandre* dans le forum JSF
    Réponses: 4
    Dernier message: 11/12/2008, 13h19
  3. probleme de recuperation de bean en session
    Par aymenroma dans le forum JSF
    Réponses: 5
    Dernier message: 04/06/2008, 10h42
  4. bean et session
    Par rupteur dans le forum JSF
    Réponses: 2
    Dernier message: 01/08/2007, 16h13
  5. [J2EE] Bean de session et fenêtre multiple.
    Par Radium133 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 30/06/2006, 14h17

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