Association entre trois classes
salut,
je suis entrain de développer trois class : TechnicalSkill, Expertise et Request
la relation entre ces class est manyToMany
la class Request.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| @Entity
public class Request implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer requestId;
private String detailRequest;
private String place;
@ManyToMany(mappedBy="requests")
private List<Expertise> expertises;
...
//getter , setter and constructor
} |
la class Expertise.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| @Entity
public class Expertise implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int idExpertise;
private String seniority;
@ManyToMany(mappedBy="expertises")
private List<TechnicalSkill> technicalSkills=new ArrayList<TechnicalSkill>();
@ManyToMany
private List<Request> requests=new ArrayList<Request>();
....
//getter , setter and constructor
} |
la class TechnicalSkill.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| @Entity
public class TechnicalSkill implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int idTechnicalSkill;
private String description;
@ManyToMany
private List<Expertise> expertises=new ArrayList<Expertise>();
...
//getter , setter and constructor
} |
un scenario de test est le suivant :
supposant j'ai dans la table request les informations suivants :
1 --- formation1 --- France
2 --- formation2 --- US
supposant j'ai dans la table expertise les informations suivants :
1 -- 3 ans
2 -- 4 ans
3 -- 6 ans
4 -- 8 ans
supposant j'ai dans la table technicalSkill les informations suivants :
1 -- java
2 -- android
3 -- spring
4 -- JEE
le but à travers les types d'associations que j'ai fait (j’espère qu'ils sont juste) dans les class
est d'avoir la possibilité de faire ce genre de test :
formation1 peut avoir 3 ans d'experience en java et 3 ans android
formation2 peut avoir 3 ans d'experience en java et 8 ans spring et 3 ans android
comme vous voyez la "seniority" (3 ans ) pour java est commune dans les deux types de "request"
j'ai ajouter manuellemnt des valeurs dans la table request , expertise et technicalSkill sans remplir la table d'association et dans la class main j'ai fait la relation entre class
j'ai fait class main pour tester un scenario :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Expertise e=serviceExpertise.readById(1);
TechnicalSkill t=ServiceTeck.readById(1);
Request r=reqService.readById(2);
List<Request> re=new ArrayList<Request>();
re.add(r);
e.setRequests(re);
List<Expertise> es=new ArrayList<Expertise>();
es.add(e);
r.setExpertises(es);
t.setExpertises(es);
serviceExpertise.update(e);
ServiceTeck.update(t); |
la table d'association sera repmlir avec succé mais supposant que j'ai une relation entre formation et 3 ans ( table association entre expertise et request 1 -- 1)
et je veux faire autre relation formation2 et 3 ans la table d'association est remplir ( 2 -- 1) mais le problème est que la ligne (1 -- 1 ) est effacé ( c'est la relation : formation et 3 ans
c'est grâce à l'utilisation de la methode update
j’espère que j'arrive à expliquer mon problème
en faite je veux quelqu'un pouvez m'aidez à corrigé l'association entre class que j'ai fait pour que j'arrive à faire un scenario comme
formation1 peut avoir 3 ans d'experience en java et 3 ans android
formation2 peut avoir 3 ans d'experience en java et 8 ans spring et 3 ans android
et par la suite grâce au nom de la request ( formation2 ) je peux récupérer les information complète de cette request ( 3 ans d'experience en java et 8 ans spring et 3 ans android)