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 :
La seconde classe :
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>();
Bien sûr les classes contiennent tout ce qu'il faut en getter, setter, constructeurs, etc.
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;
Le mapping que j'ai prévu est le suivant :
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.
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>
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
Partager