Bonjour, j'ai un problème de récupération d'objets persistants dans Hibernate.
Je possède 3 tables
mappées comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 events {events_id,title,...} person {person_id,age,...} person_event {person_id,event_id}
(Classe Person)
(Classe Events)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <hibernate-mapping> <class name="events.Person" table="person" schema="public"> <id name="personId" type="long"> <column name="person_id" /> <generator class="increment" /> </id> ... <set name="events" table="PERSON_EVENT"> <key column="PERSON_ID"/> <many-to-many column="EVENT_ID" class="events.Events"/> </set> </class> </hibernate-mapping>
Le mapping fonctionne parfaitement, les insertions et suppressions ne posent pas de problèmes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <hibernate-mapping> <class name="events.Events" table="events" schema="public"> <id name="eventsId" type="long"> <column name="events_id" /> <generator class="increment" /> </id> ... <set name="personnes" table="PERSON_EVENT"> <key column="EVENT_ID"/> <many-to-many column="PERSON_ID" class="events.Person"/> </set> </class> </hibernate-mapping>
Par contre lorsque j'essaye de récupérer une instance de ma classe Person :
Il remplit apparemment la propriété events de la classe avec des objets de type PersistentSet car je reçois l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); this.model.setDatas(session.createQuery("from Person").list()); this.personne = (Person) model.getDatas().get(0); session.getTransaction().commit();
L'erreur à lieu lorsque ma JSF tente d'accéder aux évènements contenus dans l'instance de Person:
Code : Sélectionner tout - Visualiser dans une fenêtre à part javax.servlet.ServletException: javax.servlet.jsp.JspException: Error getting property 'eventsId' from bean of type org.hibernate.collection.PersistentSet
J'espère avoir été suffisament précis ... merci de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <h:dataTable binding="#{personctrl.view.dataTable}" value="#{personctrl.personne.events}" var="ev" border="1"> <h:column> <f:facet name="header"> <h:outputText value="Identifiant" /> </f:facet> <h:outputText value="#{ev.eventsId}" /> </h:column> ...
Partager