Bonjour
j'ai un exemple simple de trois entités, en mode : chacune dans une table dans le sgbd
vehicule, moto, voiture, camion
les objets moto, voiture et camion héritent de vehicule qui est une classe abstraite dont voici la définition :
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
 
@Entity
@Table(name="TG_VEHICULE")
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Vehicule implements Serializable {
	private static final long serialVersionUID = 1L;
 
@Id
@TableGenerator(name="vehiculeGen", allocationSize=1)
@GeneratedValue(strategy=GenerationType.TABLE, generator="vehiculeGen")
 
@Column(name="ID_VEHICULE"  , columnDefinition="int")
private long idVehicule;
 
@Column(name="DT_CIRUCLATION")
private Timestamp dtCaution;
 
 public Vehicule() {
    }
 
 
//plus d'autres attributs communs a tous
 
//Getter et setter ....
....
}
 
 
@Entity
@Table(name="TG_VEHICULE_VOITURE")
@PrimaryKeyJoinColumn(name="ID_VEHICULE", referencedColumnName="ID_VEHICULE")
public class Voiture extends Vehicule implements Serializable {
	private static final long serialVersionUID = 1L;
 
public Voiture() {
    }
@Column(name="MATRICULE")
private String matricule;
 
@Column(name="NB_PORTE")
private long nbPorte;
 
....
//Autres attributs + getter et setter
 
 
 
}
Ainsi comme le montre ce code l'incrémentation de la clé (id) est faite au moyen d'une table dans le sgbd mysql le probleme se pose quand je désire modifier un objet de type voiture en camion ou autre.
Pour modifier un camion en voiture par exemple je dois récupérer l'objet camion ensuite crée un nouveau objet voiture "merge(voiture)" et puis supprimer l'objet camion "remove(camion)"
mon probleme est qu'a chaque mise a jour il y a perte de l'identifiant car en faisant un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
voiture.setId(camion.getId())
cet appel n'est pas pris en considération

en espérant que c'est claire , ma question est comment surpasser la génération automatique de l'id ?!