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 : 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
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 : 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
<?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 : 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
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 : 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
<?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 : 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
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