Bonjour,


J'ai une question concernant hibernate et les classes d'associations.
Pour le moment, j'ai les classes suivantes :

- Student
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
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="persistenceClass.Person" table="T_PERSON">
		<id name="Id" column="PERSON_ID">
			<generator class="native" />
		</id>
		<property name="FirstName" column="PERSON_FIRST_NAME" not-null="true" />
		<property name="LastName" column="PERSON_LAST_NAME" not-null="true" />
		<property name="Type" column="PERSON_TYPE" not-null="true" />
		<property name="BirthDate" column="PERSON_BIRTH_DATE" />
		<property name="BirthCity" column="PERSON_BIRTH_CITY" />
		<property name="PhoneNumber" column="PERSON_PHONE_NUMBER" />
		<property name="MobileNumber" column="PERSON_MOBILE_NUMBER" />
		<property name="Mail" column="PERSON_MAIL" />
		<property name="Address" column="PERSON_ADDRESS_ADDRESS" />
		<property name="ZipCode" column="PERSON_ADDRESS_ZIPCODE" />
		<property name="City" column="PERSON_ADDRESS_CITY" />
		<property name="Image" column="PERSON_IMAGE" type="image" />
		<many-to-one name="Country" column="PERSON_ADDRESS_COUNTRY" class="persistenceClass.Country" />
		<many-to-one name="BirthCountry" column="PERSON_BIRTH_COUNTRY" class="persistenceClass.Country" />
		<many-to-one name="Civility" column="PERSON_CIVILITY" class="persistenceClass.Civility" />
		<many-to-one name="Sex" column="PERSON_SEX" class="persistenceClass.Sex" />
		<joined-subclass name="persistenceClass.Student" table="T_STUDENT">
			<key column="PERSON_ID" />
		</joined-subclass>
		<joined-subclass name="persistenceClass.Teacher" table="T_TEACHER">
			<key column="PERSON_ID" />
		</joined-subclass>
	</class>
</hibernate-mapping>
- Class
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="persistenceClass.Class" table="T_CLASS">
		<id name="Id" column="CLASS_ID">
			<generator class="native" />
		</id>
		<many-to-one name="Formation" column="CLASS_FORMATION" class="persistenceClass.Formation" />
		<many-to-one name="Year" column="CLASS_YEAR" class="persistenceClass.Year" />
	</class>
</hibernate-mapping>
- ClassStudent
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="persistenceClass.ClassStudent" table="T_CLASS_STUDENT">
		<composite-id>
			<key-many-to-one name="Student" class="persistenceClass.Student" column="CLASS_STUDENT_STUDENT"/>
			<key-many-to-one name="SchoolClass" class="persistenceClass.Class" column="CLASS_STUDENT_CLASS"/>
		</composite-id>
	</class>
</hibernate-mapping>
Tout cela fonctionne, j'aimerai cependant savoir s'il est possible dans ma classe "Class" d'avoir une List<Student> afin que je puisse acceder a tous les eleve d'une class depuis la classe meme.

J'en profite pour poser une autre question quand je tente de supprimer un utilisateur, si toute les foreigns keys sont a null, cela fonctionne mais sinon j'ai l'excetpion suivante :

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
Exception in thread "AWT-EventQueue-0" org.hibernate.HibernateException: illegally attempted to associate a proxy with two open Sessions
	at org.hibernate.proxy.AbstractLazyInitializer.setSession(AbstractLazyInitializer.java:126)
	at org.hibernate.engine.StatefulPersistenceContext.reassociateProxy(StatefulPersistenceContext.java:572)
	at org.hibernate.engine.StatefulPersistenceContext.reassociateIfUninitializedProxy(StatefulPersistenceContext.java:532)
	at org.hibernate.event.def.ProxyVisitor.processEntity(ProxyVisitor.java:50)
	at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:127)
	at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:84)
	at org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:78)
	at org.hibernate.event.def.AbstractVisitor.process(AbstractVisitor.java:146)
	at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:123)
	at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:74)
	at org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java:948)
	at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:926)
	at persistenceService.Hibernate.delete(Hibernate.java:45)
	at components.Panel_Listing.actionPerformed(Panel_Listing.java:120)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253)
	at java.awt.Component.processMouseEvent(Component.java:6108)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:5873)
	at java.awt.Container.processEvent(Container.java:2105)
	at java.awt.Component.dispatchEventImpl(Component.java:4469)
	at java.awt.Container.dispatchEventImpl(Container.java:2163)
	at java.awt.Component.dispatchEvent(Component.java:4295)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
	at java.awt.Container.dispatchEventImpl(Container.java:2149)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4295)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

Merci d'avance.

Cordialement,
Tincani Geoffrey