Bonjour,
J'ai une table EMPLOYEE dont la clé est une clé composite
EMPLOYEE(SITE, IDEMPLOYEE, NAME)
J'ai une table TASK dont la clé est aussi une clé composite et dont l'une des colonnes (CREATOR_BY) est l'ID de l'employé.
TASK(SITE,IDTASK,CREATOR_BY)
Pour mapper la colonne CREATOR_BY, j'aimerais utiliser l'attribut many-to-one. Je dois donc spécifier que la colonne CREATOR_BY correspond à la colonne IDEMPLOYEE de la table EMPLOYEE mais ça ne suffit pas car elle forme une clé composite avec la colonne SITE.
Pour ce faire, j'ai utilisé l'attribut formula comme suit:
Code xml : 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 <class name="Employee" table="EMPLOYEE" lazy="true"> <composite-id> <key-property name="site" type="System.String"/> <key-property name="idEmployee" type="System.String"/> </composite-id> <property name="name" type="System.String/> </class> <class name="Task" table="TASK" lazy="true"> <composite-id> <key-property name="site" type="System.String"/> <key-property name="idTask" type="System.String"/> </composite-id> <many-to-one name="creator_By" class="Employee" lazy="false"> <formula>site<formula/> <column name="creator_By"/> </many-to-one> </class>
Est-ce malgrès tout la bonne solution selon vous ?
Comment fait Hibernate pour savoir que CREATOR_BY correspond à la colonne IDEMPLOYEE de la classe Employee ?
Qu'est-ce que l'attribut formula ?
Pour info, j'ai défini les classes Employee et Task de la manière suivante:
Code Java : 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 public class Employee{ private String site; private String idEmployee; private String name public Employee(){ } public String getSite() { return site; } public void setSite(String site) { this.site = site; } public String getIdEmployee() { return idEmployee; } public void setIdEmployee(String idEmployee) { this.idEmployee = idEmployee; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public class Task{ private String site; private String idTask; private Employee creator_By public Task(){ } public String getSite() { return site; } public void setSite(String site) { this.site = site; } public String getIdTask() { return idTask; } public void setIdTask(String idTask) { this.idTask = idTask; } public Employee getCreator() { return creator_By; } public void setCreator(String creator) { this.creator_By = creator; } }
Merci d'avance,
Zoax
Partager