[Hibernate] Problème de désérialisation
Bonjour à tous,
Débutant en hibernate, je me bats depuis quelques jours pour l'appliquer à mon projet, mais je n'avance plus depuis ce matin.
Lors de mon chargement d'une demande, l'objet ne se désérialise pas entièrement : le numéro est correct, mais ma date et mon objet Personne sont vides.
J'ai beaucoup de mal à comprendre que mon objet Personne ne se charge pas, alors qu'il se charge très bien lorsque je l'appelle seul.
Voici les morceaux de code correspondant :
Personne.java
Code:
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
| package bean;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Personne implements Serializable{
private static final long serialVersionUID = 1L;
// Valeurs
@Id
private String identifiant;
private String nom;
private String prenom;
private String role;
// Proprietés
public String getIdentifiant() {
return identifiant;
}
public void setIdentifiant(String identifiant) {
this.identifiant = identifiant;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
// Constructeurs
public Personne(String identifiant, String nom, String prenom,
String role) {
super();
this.identifiant = identifiant;
this.nom = nom;
this.prenom = prenom;
this.role = role;
}
public Personne() {
super();
}
} |
Personne.hbm.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="bean.Personne" table="Personnes">
<id name="identifiant" column="Identifiant"></id>
<property name="nom" type="string" column="Nom"/>
<property name="prenom" type="string" column="Prenom"/>
<property name="role" type="string" column="Role"/>
</class>
</hibernate-mapping> |
Demande.java
Code:
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
| package bean;
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Demande implements Serializable{
private static final long serialVersionUID = 1L;
// valeurs
@Id
private String numero;
private Personne demandeur;
private Date dateDemande;
// Proprietés
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
public Personne getDemandeur() {
return demandeur;
}
public void setDemandeur(Personne demandeur) {
this.demandeur = demandeur;
}
public Date getDateDemande() {
return dateDemande;
}
public void setDateDemande(Date dateDemande) {
this.dateDemande = dateDemande;
}
// Constructeurs
public Demande(String numero, Personne demandeur, Date dateDemande) {
this.numero = numero;
this.demandeur = demandeur;
this.dateDemande = dateDemande;
}
public Demande() {
}
} |
Demande.hbm.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="bean.Demande" table="Demandes">
<id name="numero" column="Numero" type="string"></id>
<property name="dateDemande" type="date" column="DateDemande"/>
<property name="demandeur" type="bean.Personne" column="Demandeur"/>
</class>
</hibernate-mapping> |
Ma servlet RechercherDemande.java
Code:
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
| package servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.hibernateUtil;
import bean.Demande;
import bean.Personne;
/**
* Servlet implementation class RechercherDemande
*/
public class RechercherDemande extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher dispatcher;
Demande essai=null;
Personne utilisateurConnecte = (Personne)request.getSession().getAttribute("utilisateurConnecte");
// Récupération des informations saisies dans le formulaire
String numero = request.getParameter("numero");
// Controle des informations :
// si tous les champs ne sont pas renseignés, revenir sur la page du formulaire
if ((numero == null) || (numero.length() == 0)){
String message = "Le champ numéro de demande est obligatoire";
request.setAttribute("messageErreur", message);
dispatcher = request.getRequestDispatcher("/"+utilisateurConnecte.getRole()+"/accueil.jsp");
dispatcher.forward(request, response);
return;
}
try {
Session hibSession = hibernateUtil.getSession();
Transaction t = hibSession.beginTransaction();
essai = (Demande) hibSession.load(Demande.class, numero);
t.commit();
} catch (Exception e) {
e.printStackTrace();
}
// Si l'essai a été trouvé...
if (essai.getNumero() != null) {
request.setAttribute("essaiCherche", essai);
dispatcher = request.getRequestDispatcher("/commun/detailDemande.jsp");
dispatcher.forward(request, response);
return;
}
// ...sinon
else {
// Retourner à l'écran d'identification avec un message d'erreur fonctionnel
String message = "Demande non trouvée";
request.setAttribute("messageErreur", message);
dispatcher = request.getRequestDispatcher("/"+utilisateurConnecte.getRole()+"/accueil.jsp");
dispatcher.forward(request, response);
}
}
} |
Je remercie d'avance les personnes qui pourront me venir en aide :)