Bonjour,
je ne suis pas certain que mon titre est clair, alors je vais détailler un peu plus ma question.
Tout d'abord, il est important de préciser que je ne maîtrise pas du tout JPA et hibernate; mes connaissances à ce sujet sont purement empiriques et il me manque donc certainement des notions fondamentales. Je dois pourtant intervenir dessus, d'où des questions dont les réponses seront souvent triviales à des initiés!
J'en viens donc à ma question.
Je dispose d'une classe "Operation" qui possède plusieurs clefs de même type vers un objet de type "Promotion". Pour des raisons très spécifiques au projet, on ne peut pas changer ce fait.
Celà ressemble à:
Je voudrais pouvoir, depuis n'importe quelle promotion, trouver son parent.
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 @Entity @Table(name = "operation") public class Operation { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "promotion_fk") private Promotion promotion; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "promotion_interne_fk") private Promotion privatePromotion; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "promotion_legale_fk") private Promotion legalPromotion; // + getters/ setters } @Entity @Table(name = "promotion") public class Promotion { @Id @GeneratedValue private int id; // ICI ce que je voudrais @OneToOne @MappedBy(???) Operation parentOperation; // + getters/ setters }
Est-il possible de réaliser cette relation sans changer la structure de la base, juste en jouant avec les annotations, voire en rajoutant un ou plusieurs champs.
Je sais que celà est possible en créant des descendants de Promotion et en les typant, mais c'est une solution que je ne peux malheureusement pas mettre en œuvre (à cause principalement de l'impact sur le projet).
Si quelqu'un(e) a idée, je suis tout ouï. Et en attendant, je vous remercie déjà de m'avoir lu jusque là!
Partager