[HIBERNATE] Chargement d'objet incorrect
Bonjour, j'ai un problème de récupération d'objets persistants dans Hibernate.
Je possède 3 tables
Code:
1 2 3
| events {events_id,title,...}
person {person_id,age,...}
person_event {person_id,event_id} |
mappées comme suit :
(Classe Person)
Code:
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> |
(Classe Events)
Code:
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> |
Le mapping fonctionne parfaitement, les insertions et suppressions ne posent pas de problèmes.
Par contre lorsque j'essaye de récupérer une instance de ma classe Person :
Code:
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(); |
Il remplit apparemment la propriété events de la classe avec des objets de type PersistentSet car je reçois l'erreur :
Code:
javax.servlet.ServletException: javax.servlet.jsp.JspException: Error getting property 'eventsId' from bean of type org.hibernate.collection.PersistentSet
L'erreur à lieu lorsque ma JSF tente d'accéder aux évènements contenus dans l'instance de Person:
Code:
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>
... |
J'espère avoir été suffisament précis ... merci de votre aide.