Bonjour,

Tout d'abord je tiens à préciser que j'utilise hibernate depuis à peu près 2 jours..

Un collègue avait créé 3 tables dans notre base SQL, et je suis censé les utiliser sauf que d'après moi il manque une notion importante dans leurs conceptions.
J'aimerais connaître les possibilités que j'ai, sans avoir à toucher aux 3 tables existantes.

La problématique était de stocker une table Excel, avec une 1ere partie des colonnes qui sont des données d'entrée, et une 2eme partie qui sont des données de sortie.
Chaque ligne d'une feuille contient plusieurs "check" (données d'entrée), et plusieurs "result" (données de sortie).

Tables SQL


  • ExcelSheet (id, ...)
  • ExcelCheck (sheet_id, row_index, columnName, ...)
  • ExcelResult (sheet_id, row_index, columnName, ...)


Entités correspondantes (java)

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
@Entity
@Table
public class ExcelSheet implements Serializable
{
    @Id
    @Column
    private Long id;
 
    //ctor + getters/setters
}
 
@Entity
@Table
@IdClass(ExcelCheckId.class)
public class ExcelCheck implements Serializable
{
 
    @Id
    @Column
    private Long sheetId;
 
    @Id
    @Column
    private Long rowIndex;
 
    @Id
    @Column
    private String columnName;
 
    //ctor + getters/setters
}
 
@Entity
@Table
@IdClass(ExcelResultId.class)
public class ExcelResult implements Serializable
{
 
    @Id
    @Column
    private Long sheetId;
 
    @Id
    @Column
    private Long rowIndex;
 
    @Id
    @Column
    private String columnName;
 
    //ctor + getters/setters
}

Les checks et results ont un numéro de ligne. Il peut y avoir plusieurs check par ligne, suivi par plusieurs results.
D'après moi une table ligne aurait du être créée, permettant de regrouper les checks et results par ligne. Cela n'a pas été fait, et on ne peut pas revenir en arrière.

Ma question:

Est-il possible de créer une entité intermédiaire ExcelRow (sans toucher aux tables existantes!), qui permet d'avoir le comportement disant qu'une sheet contient des rows qui contiennent des checks et des results?
J'aimerais faire un sheet.getRows(), suivi d'un row.getChecks() et row.getResults() !

Que me conseilleriez vous?

Merci d'avance pour vos réponses!