IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

Forcer la mise à jour d'un id en surpassant la stratégie GenerationType.TABLE


Sujet :

JPA Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Points : 106
    Points
    106
    Par défaut Forcer la mise à jour d'un id en surpassant la stratégie GenerationType.TABLE
    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 ?!

  2. #2
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Salut,

    Pourquoi en supprimant un objet camion et en créant un objet voiture, es-tu obligé de recopier l'id ?
    Puisqu'il est généré automatiquement, en le créant et en le persistant avec les propriétés de camion (sans l'id), il ne devrait pas y avoir de probleme car ce sont deux tables distinctes...

    Par ailleurs, ajoute @MappedSuperclass à ta classe mère
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Points : 106
    Points
    106
    Par défaut
    Merci ! pour ton conseil ...Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [IP-2010] Forcer la mise-à jour d'un formulaire
    Par MrMeteo dans le forum InfoPath
    Réponses: 1
    Dernier message: 15/09/2014, 09h41
  2. Forcer les mises à jour à l'extinction
    Par zbahoui dans le forum Windows XP
    Réponses: 2
    Dernier message: 11/05/2011, 20h42
  3. Forcer la mise à jour d'un progressbar
    Par colorid dans le forum Langage
    Réponses: 5
    Dernier message: 27/11/2010, 13h47
  4. Forcer la mise à jour de la version du xap
    Par Golzinne dans le forum Silverlight
    Réponses: 13
    Dernier message: 14/09/2010, 09h25
  5. Réponses: 4
    Dernier message: 08/10/2007, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo