Bonjour,

Mon système est sûrement mal conçu. En fait, je pars de mes classes JAVA. J'en ai déduit mes tables. Mais impossible de mapper les deux. Alors de deux choses l'une, soit mes tables ne correpondent pas à mon modèle objet, soit le mapping hibernate est faux. Voici mes classes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
public class Sportif {
	private	int		numero	= -1;
	private	String	nom 	= null;
	private	int		poids	= 0;
	private	int		taille	= 0;
	private	int		vo_max	= 0;
	private	int		max_hr	= 0;
	private	int		sitting_hr	= 0;
	private	Date	dateNaiss = null;
	private	char	genre = 'M';
	private	String	activite = "Moderate";
 
	Set<Seance>	lesSeances = new HashSet<Seance>();
La seconde classe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
public class Seance {
 
	private	int		numero 	= -1;
	private	String	nom 	= "Libre";
    private	Time	date 	= null;
    private	int		calories= 0;
    private	Sportif	sportif	= null;
Bien sûr les classes contiennent tout ce qu'il faut en getter, setter, constructeurs, etc.

Le mapping que j'ai prévu est le suivant :

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
 
<hibernate-mapping>
<class name="modele.core.Sportif" table="sportif" lazy="false">
	<id name="numero" type="integer" column="num_user">
		<generator class="native">
			<param name="sequence">user_num_user_seq</param>
		</generator>
	</id>
	<property name="nom" type="string" column="nom"/>
	<property name="dateNaiss" type="date" column="date_naiss"/>
	<property name="taille" type="integer" column="taille"/>
	<property name="poids" type="integer" column="poids"/>
	<property name="vo_max" type="integer" column="vo_max"/>
	<property name="max_hr" type="integer" column="max_hr"/>
	<property name="sitting_hr" type="integer" column="sitting_hr"/>
	<property name="genre" type="char" column="genre"/>
	<property name="activite" type="string" column="activite"/>
 
	<set name="lesSeances" cascade="all">
		<key column="sportif"></key>
		<one-to-many class="modele.core.Seance"/>
	</set>
</class>
 
<class name="modele.core.Seance" table="seance" lazy="false">
	<id name="numero" type="integer" column="num_seance">
		<generator class="native">
			<param name="sequence">seance_num_seance_seq</param>
		</generator>
	</id>
	<property name="nom" type="string" column="nom"></property>
	<property name="calories" type="integer" column="calories"></property>
	<property name="date" type="timestamp" column="date"></property>
 
	<many-to-one name="sportif" class="modele.core.Sportif"></many-to-one>
</class>
Toutes les doc que j'ai pu lire ne m'ont pas apporté de réponse. Je fais une erreur, mais je ne sais pas laquelle.

Ah oui, j'oubliais : lorsque que je ne lie pas les deux mapping, il m'est possible rendre les objets Seance et Sportif persistant, bien sûr sans cascade entre les classes. Mais dès que j'ajoute au mapping de Sportif la balise <set> et au mapping de Seance la clause <one-to-many>, l'erreur hibernate est de type 'BatchUpdateException'.

Merci d'avance