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 :

Java EE (JPA) : Echec d'insertion d'enregistrement dans la base de données postgresql


Sujet :

JPA Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Points : 31
    Points
    31
    Par défaut Java EE (JPA) : Echec d'insertion d'enregistrement dans la base de données postgresql
    Bonjour à tous,

    Je rencontre actuellement une difficulté qui me pourrit l'existence.

    Je me suis mis récemment à la technologie Java EE et après lu de long en large le tuto de Coyote, j'ai décider de bosser sur un cas pratique.

    Voilà lorsque j'essaie d'insérer un enregistrement dans la base de données (postgresql), elle n'est pas effectuée et aucune erreur ne s'affiche dans la console.

    J'utilise le serveur d'application GlassFish Application Server 3.1 Servlet 3.0.

    Ci dessous les codes de mes servlets et de mes JSP.

    Merci de bien vouloir m'aider à localiser où se trouve(nt) le(s) erreur(s).

    Code de l'entité Ville

    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
    package com.entities;
     
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.Table;
     
    @Entity
    @Table(name="ville")
    public class Ville {
     
    	@Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	@Column(name="id_ville")
    	private Long idVille;
     
    	@Column(name="libelle_ville")
    	private String libelleVille;
     
    	@ManyToOne
    	@JoinColumn(name="id_departement")
    	private Departement departement;
     
    	public Long getIdVille() {
    		return idVille;
    	}
     
    	public void setIdVille(Long idVille) {
    		this.idVille = idVille;
    	}
     
    	public String getLibelleVille() {
    		return libelleVille;
    	}
     
    	public void setLibelleVille(String libelleVille) {
    		this.libelleVille = libelleVille;
    	}
     
    	public Departement getDepartement() {
    		return departement;
    	}
     
    	public void setDepartement(Departement departement) {
    		this.departement = departement;
    	}
     
    	@Override
    	public String toString() {
    		return "Ville [idVille=" + idVille + ", libelleVille=" + libelleVille
    				+ ", departement=" + departement + "]";
    	}
    }
    Code du DAO VilleDao
    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
     
    package com.dao;
     
    import java.util.List;
     
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.NoResultException;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;
    import javax.persistence.TypedQuery;
     
    import com.entities.Ville;
    import com.entities.Departement;
     
    @Stateless
    public class VilleDao {
     
    	private static final String JPQL_SELECTIONNER_VILLE = "SELECT v FROM Ville v ORDER BY v.libelleVille ASC";
    	private static final String JPQL_SELECTIONNER_VILLE_PAR_LIBELLE = "SELECT v FROM Ville v WHERE v.libelleVille = :libelleVille";
    	private static final String JPQL_MODIFIER_VILLE = "UPDATE Ville v SET v.departement = :departement, v.libelleVille = :libelleVille WHERE v.idVille = :idVille";
    	private static final String PARAM_DEPARTEMENT = "departement";
    	private static final String PARAM_ID_VILLE = "idVille";
    	private static final String PARAM_LIBELLE_VILLE = "libelleVille";
     
    	@PersistenceContext(unitName="bdd_gestion_objets_voles_ou_perdus_PU")
    	private EntityManager em;
     
    	public void creer(Ville ville) throws DaoException{
    		try{
    			em.persist(ville);
    		}catch(Exception e){
    			throw new DaoException(e);
    		}
    	}
     
    	public List<Ville> selectionner() throws DaoException{
    		try{
    			TypedQuery<Ville> query = em.createQuery(JPQL_SELECTIONNER_VILLE, Ville.class);
    			return query.getResultList();
    		}catch(Exception e){
    			throw new DaoException(e);
    		}
    	}
     
    	public Ville selectionner(Long idVille) throws DaoException{
    		try{
    			return em.find(Ville.class, idVille);
    		}catch(Exception e){
    			throw new DaoException(e);
    		}
    	}
     
    	public Ville selectionner(String libelleVille) throws DaoException{
    		Ville ville = null;
    		Query query = em.createQuery(JPQL_SELECTIONNER_VILLE_PAR_LIBELLE);
    		query.setParameter(PARAM_LIBELLE_VILLE, libelleVille);
    		try{
    			ville = (Ville)query.getSingleResult();
    		}catch(NoResultException e){
    			return null;
    		}catch(Exception e){
    			throw new DaoException(e);
    		}
    		return ville;
    	}
     
    	public void modifier(Long idVille, String libelleVille, Departement departement) throws DaoException{
    		try{
    			Query query = em.createQuery(JPQL_MODIFIER_VILLE);
    			query.setParameter(PARAM_DEPARTEMENT, departement);
    			query.setParameter(PARAM_ID_VILLE, idVille);
    			query.setParameter(PARAM_LIBELLE_VILLE, libelleVille);
    		}catch(Exception e){
    			throw new DaoException(e);
    		}
    	}
     
    	public void supprimer(Ville ville) throws DaoException{
    		try{
    			em.remove(em.merge(ville));
    		}catch(Exception e){
    			throw new DaoException(e);
    		}
    	}
    }
    Code de l'objet métier VilleForm

    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
    package com.forms;
     
    import java.util.HashMap;
    import java.util.Map;
     
    import javax.ejb.EJB;
    import javax.servlet.http.HttpServletRequest;
     
    import com.dao.DepartementDao;
    import com.dao.VilleDao;
    import com.entities.Departement;
    import com.entities.Ville;
     
    public class VilleForm {
     
    	private static final String CHAMP_ID_VILLE = "idVills";
    	private static final String CHAMP_LIBELLE_VILLE = "libelleVille";
    	private static final String COMBO_BOX_ID_DEPARTEMENT = "idDepartement";
     
    	private String resultat;
    	private Map<String, String> erreur = new HashMap<String, String>();
     
    	@EJB
    	private VilleDao villeDao;
    	@EJB
    	private DepartementDao departementDao;
     
    	public VilleForm(VilleDao villeDao, DepartementDao departementDao){
    		this.villeDao = villeDao;
    		this.departementDao = departementDao;
    	}
     
    	public String getResultat() {
    		return resultat;
    	}
     
    	public void setResultat(String resultat) {
    		this.resultat = resultat;
    	}
     
    	public Map<String, String> getErreur() {
    		return erreur;
    	}
     
    	public void setErreur(String nomChamp, String message) {
    		erreur.put(nomChamp, message);
    	}
     
    	public Ville EnregistrerVille(HttpServletRequest request){
    		String paramLibelleVille = getValeurChamp(request, CHAMP_LIBELLE_VILLE);
    		String paramIdDepartement = getValeurChamp(request, COMBO_BOX_ID_DEPARTEMENT);
    		Ville ville = new Ville();
     
    		try{
    			validationChampLibelleVille(paramLibelleVille);
    		}catch(FormValidationException e){
    			setErreur(CHAMP_LIBELLE_VILLE, e.getMessage());
    		}
    		ville.setLibelleVille(paramLibelleVille);
     
    		try{
    			validationComboBoxDepartement(paramIdDepartement);
    		}catch(FormValidationException e){
    			setErreur(COMBO_BOX_ID_DEPARTEMENT, e.getMessage());
    		}
    		Departement departement = departementDao.selectionner(paramIdDepartement);
    		ville.setDepartement(departement);
     
    		if(erreur.isEmpty()){
    			villeDao.creer(ville);
    			resultat="Ville enregistrée avec succès.";
    		}else{
    			resultat="Echec d'enregistrement de la ville.";
    		}
     
    		return ville;
    	}
     
    	public Ville ModifierVille(HttpServletRequest request){
    		String paramIdVille = getValeurChamp(request, CHAMP_ID_VILLE);
    		String paramLibelleVille = getValeurChamp(request, CHAMP_LIBELLE_VILLE);
    		String paramIdDepartement = getValeurChamp(request, COMBO_BOX_ID_DEPARTEMENT);
    		Ville ville = new Ville();
     
    		try{
    			validationChampLibelleVille(paramLibelleVille);
    		}catch(FormValidationException e){
    			setErreur(CHAMP_LIBELLE_VILLE, e.getMessage());
    		}
    		ville.setLibelleVille(paramLibelleVille);
     
    		try{
    			validationComboBoxDepartement(paramIdDepartement);
    		}catch(FormValidationException e){
    			setErreur(COMBO_BOX_ID_DEPARTEMENT, e.getMessage());
    		}
    		ville.setDepartement(departementDao.selectionner(paramIdDepartement));
     
    		if(erreur.isEmpty()){
    			villeDao.modifier(Long.parseLong(paramIdVille),paramLibelleVille, departementDao.selectionner(paramIdDepartement));
    			resultat="Ville modifiée avec succès.";
    		}else{
    			resultat="Echec de la modification de la ville.";
    		}
     
    		return ville;
    	}
     
    	private String getValeurChamp(HttpServletRequest request, String nomChamp){
    		String valeurChamp = request.getParameter(nomChamp);
    		if(valeurChamp == null || valeurChamp.trim().length() == 0){
    			return null;
    		}else{
    			return valeurChamp.trim();
    		}
    	}
     
    	private void validationChampLibelleVille(String libelleVille) throws FormValidationException{
    		if(libelleVille == null || libelleVille.trim().length() == 0){
    			throw new FormValidationException("Erreur : veuillez saisir le libellé de la ville.");
    		}else if(villeDao.selectionner(libelleVille) != null){
    			throw new FormValidationException("Erreur : La ville saisie existe déjà dans la base.");
    		}
    	}
     
    	private void validationComboBoxDepartement(String departement) throws FormValidationException{
    		if(departement == null || departement.trim().length() == 0){
    			throw new FormValidationException("Erreur : veuillez saisir le libellé de la ville.");
    		}
    	}
    }
    Code de la servlet EnregistrerVille.java
    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
    package com.servlets;
     
    import java.io.IOException;
    import java.util.List;
     
    import javax.ejb.EJB;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.ServletException;
     
    import com.dao.DepartementDao;
    import com.dao.VilleDao;
    import com.entities.Departement;
    import com.entities.Ville;
    import com.forms.VilleForm;
     
    @WebServlet("/enregistrerville")
    public class EnregistrerVille extends HttpServlet {
     
    	private static final long serialVersionUID = -8823747358928721105L;
     
    	private static final String ATTRIBUT_FORM = "form";
    	private static final String ATTRIBUT_DEPARTEMENT = "departement";
    	private static final String ATTRIBUT_VILLE = "ville";
    	private static final String VUE_AFFICHER_VILLE = "/afficherville";
    	private static final String VUE_ENREGISTRER_VILLE = "/WEB-INF/enregistrerville.jsp";
     
    	@EJB
    	private VilleDao villeDao;
    	@EJB
    	private DepartementDao departementDao;
     
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{		
    		List<Departement> listeDepartement = departementDao.selectionner();
    		request.setAttribute(ATTRIBUT_DEPARTEMENT, listeDepartement);
     
    		this.getServletContext().getRequestDispatcher(VUE_ENREGISTRER_VILLE).forward(request, response);
    	}
     
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    		VilleForm form = new VilleForm(villeDao, departementDao);
    		Ville ville = form.EnregistrerVille(request);
    		List<Departement> listeDepartement = departementDao.selectionner();
    		request.setAttribute(ATTRIBUT_DEPARTEMENT, listeDepartement);
    		request.setAttribute(ATTRIBUT_FORM, form);
    		request.setAttribute(ATTRIBUT_VILLE, ville);
     
     
     
    		if(form.getErreur().isEmpty()){
    			response.sendRedirect(request.getContextPath()+VUE_AFFICHER_VILLE);
    		}else{
    			this.getServletContext().getRequestDispatcher(VUE_ENREGISTRER_VILLE).forward(request, response);
    		}
     
    	}
    }
    Code de la JSP enregistrerville.jps

    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
    <%@ page pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title>Enregistrer Ville</title>
    		<link rel="stylesheet" type="text/css" href="<c:url value="/inc/style.css"/>"/>
    	</head>
    	<body>
    		<form action="enregistrerville" method="post">
    			<label for="libelleVille">Libellé <span class="requis">*</span></label>
    			<input type="text" id="libelleVille" name="libelleVille" value="<c:out value="${ville.libelleVille}"/>" size="50" maxlength="250" /><span class="erreur"><c:out value="${form.erreur['libelleVille']}"/></span><br/>
    			<label for="departement">Département <span class="requis">*</span></label>
    			<select id="departement" name="departement">
    				<c:forEach items="${departement}" var="vardepartement">
    					<option value="<c:out value="${vardepartement.idDepartement}"/>"><c:out value="${vardepartement.libelleDepartement}"/></option>
    				</c:forEach>
    			</select><span class="erreur"><c:out value="${form.erreur['departement']}"/></span><br/>
    			<input type="submit" name="btnEnregistrer" value="Enregistrer" class="sansLabel">
    		</form>
    		<p class="${empty form.erreur ? 'succes' : 'erreur'}"><c:out value="${form.resultat}"/></p>
    		<p><c:out value="${ville.departement}"/></p>
    	</body>
    </html>
    Code de l'objet FormValidationException

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package com.forms;
     
    public class FormValidationException extends RuntimeException {
     
    	private static final long serialVersionUID = -3658562644472863641L;
     
    	public FormValidationException(String message){
    		super(message);
    	}
     
    }

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par FooBayo Voir le message
    elle n'est pas effectuée
    Tu peux être plus précis? Il se passe quoi concrètement quand tu clique sur le bouton?
    Citation Envoyé par FooBayo Voir le message
    aucune erreur ne s'affiche dans la console.
    Vu qu'à aucun moment tu n'affiche tes erreurs dans la console (tu te contente de les mettre dans 'erreurs' et de les ignorer ensuite), ça ne risque pas d'arriver. Comment déjà par mettre des printStackTrace dans tes catch

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Points : 31
    Points
    31
    Par défaut Erreur détectée
    Citation Envoyé par tchize_ Voir le message
    Tu peux être plus précis? Il se passe quoi concrètement quand tu clique sur le bouton?

    Vu qu'à aucun moment tu n'affiche tes erreurs dans la console (tu te contente de les mettre dans 'erreurs' et de les ignorer ensuite), ça ne risque pas d'arriver. Comment déjà par mettre des printStackTrace dans tes catch
    Merci tchize j'ai pu régler le problème grâce aux printStackTrace que tu m'as conseillé.
    En effet un champ retournait une valeur null.

    Merci infiniment

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/05/2015, 14h36
  2. [ZF 1.9] Insertion d'enregistrement dans la base de données
    Par sheira dans le forum MVC
    Réponses: 4
    Dernier message: 12/10/2012, 09h32
  3. Réponses: 5
    Dernier message: 28/02/2011, 21h42
  4. [SQL] Problème lors de l'insertion d'un enregistrement dans ma base de données.
    Par Velkan.nexus dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/10/2007, 11h59
  5. [MySQL] Insertion d'image dans une base de données
    Par dragonfly dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/03/2006, 14h59

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