Hi,

Voila je suis en train de vouloir intégrer hibernate à mon projet (qui a la base fonctionner normalement). Mon projet est une suite de question grace à un arbre binaire, si ont répond oui, je vais a gauche de l'arbre avec une nouvelle question, si non je vais a droite.

Voici comment j'ai construit mon bean avant l'insertion d'hibernate et qui fonctionner
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
 
        private Long id_node;
	private String question;
	private String result;
	private Long id_left_node_children;
	private Long id_right_node_children;
	Nodes left;
	Nodes right;
 
    private final static Map<Long, Nodes> nodes=new HashMap<Long,Nodes>();
 
	public Nodes(Long id, String question, String result, Long id_left_node_children, Long id_right_node_children) 
	{
	       this.id_node=id;
	       this.question=question;
	       this.result=result;
	       this.id_left_node_children=id_left_node_children;
	       this.id_right_node_children=id_right_node_children;
	       nodes.put(id, this);
	}
 
        public void setLeftnode(Nodes left) 
	{
		this.left = left;
	}
 
	public Nodes getLeftnode() 
	{
		return nodes.get(id_left_node_children);
	}
 
	public void setRightnode(Nodes right) 
	{
		this.right = right;
	}
 
	public Nodes getRightnode() 
	{
		return nodes.get(id_right_node_children);
	}
En insérant hibernate, j'ai juste ajouter les annotations @Column pour id, question, result, id_left/right_node et @Transient pour Nodes left/right, le reste du bean reste le meme.

Maintenant ma dao ou je créer une collection de ma bdd
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
     public Nodes select (HttpServletRequest request) throws Dao_exception
    {
        List <Nodes> nodeList = new ArrayList<Nodes>();
        nodeList = em.createQuery("SELECT n FROM Nodes n").getResultList();
 
        return nodeList.get(0);
    }
Dans ma jsp je fais juste un test d'affichage comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<c:out value="${nodes.getQuestion() }"></c:out>
Ce test la fonctionne puisque je ne descend pas dans l'arbre. Il me montre bien la première question de l'arbre

Par contre, en faisant ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<c:out value="${nodes.getRightnode().getQuestion() }"></c:out>
Cela ne m'affiche rien, je n'ai pas un message d'erreur, juste une page blanche.

Grace à ce test, je comprends que le problème vient (enfin je suppose) de la partie @Transient et des getters setters de mes noeuds. Pour moi, je pense que hibernate ne comprend pas cette partie et ne descend pas dans l'arbre

Est ce que en insérant hibernate, il faut fonctionner différemment ou est juste une erreur que je ne vois pas ?

merci