Bonjour,
J'aimerais savoir si il est possible d'avoir une collection d'enum avec JPA en ManyToMany.
Voici un example:
j'ai la relation suivante Personne (ManytoMany) Villes.
Soit un personne peut avoir 0 ou n villes et une villes peut être rattacher à 0 ou n personnes.
Pour des raisons purement de performance et pratique j'aimerais eviter que mon EntityBean personne stocke les objets ville dans leur totalité. Le code suivant décrit la facon standart d'implementer le many to many:
Et en Base de donnée on aurait la schema 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 @Entity public class Personne implements Serializable { private Integer id; private String name; private Set<Villes> villes; @Id @GeneratedValu(strategy=GenerationType.AUTO) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @ManyToMany() @JoinTable(name="T_PERSONNE_VILLE", joinColumns= @JoinColumn(name="PERSONNE_ID",referencedColumnName="ID"), inverseJoinColumns= @JoinColumn(name="VILLE_ID",referencedColumnName="ID") ) public Set<Villes> getVilles() { return villes; } public void setVilles(Set<Villes> villes) { this.villes= villes; } } @Entity public class Villes implements Serializable { private Integer id; private String nomVille; private .... // plus n champs mais qu'on n'a pas d'interet de loader avec l'entity personne .. @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name = "ID") public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } ... }
T_PERSONNE (id,nom)
T_VILLE (id,nomVille,...,...)
T_PERSONNE_VILLE(PERSONNE_ID,VILLE_ID)
Ce model fonctionne mais est un peu lourd car à chaque load user je load toutes les informations de mes villes qui sont inutiles pour cette relation entre personne et ville ...
D'ou l'idée de ne plus avoir une relation avec une collection d'entityBean Villes mais une collection ou un set d'enumération de VillesEnum dans mon entity Personne.(sachant que je garde dans mon modèle ejb l'entityBean Villes pour d'autres utilisation ).
ex de l'enum:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class VillesEnum extends org.apache.commons.lang.enums.ValuedEnum { public static VillesEnum MARSEILLE = new VillesEnum ("MARSEILLE",1); public static VillesEnum TOURS = new VillesEnum ("TOURS",2); public VillesEnum (String name, int value) { super(name, value); }
Mon problème et que je ne voie pas comment faire le mapping au niveau de l'entityBean personne avec ma collection d'enum.
Quelqu'un aurait til une suggestion ?![]()
Merci d'avance, Jérôme
Partager