Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1656 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA][HIBERNATE] Id via UserType

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA][HIBERNATE] Id via UserType

n°2081414
cartemere
Posté le 08-06-2011 à 18:40:16  profilanswer
 

Bonjour,
 
J'ai une question concernant la mise en place d'Hibernate pour la persistence des beans d'un projet Java.
 
Je cherche à définir un Identifiant "complexe" sur ma Classe.
Cet identifiant est lui même une Classe, qui en contient une autre.
J'ai donc 3 classes imbriquées.
 
 
 
Contraintes
1/ Les beans sont gérés par une équipe transverse, je n'ai donc pas la possibilité :
- de les modifier.
- de mettre un oid.
- de refactorer
 
 
 
Modèle Java
Voici grosso modo le modèle que je dois mapper.

Code :
  1. class MonEntite {
  2.   Identifier id;   // My Primary Key
  3.   String message;
  4. }
  5. class Identifier {
  6.   String applicationCode;
  7.   Integer version;
  8.   ObjectType type;
  9. }
  10. class ObjectType {
  11.   String typeName;
  12. }


 
Ne me demandez pas pourquoi le modèle est comme ça :o
C'est historique, actuellement persisté dans certaines applis de la maison via des Daos SQL maintenus à la main... et pour le projet que je démarre, j'ai envie de mettre du Hibernate.
 
 
 
Modèle BDD
Donc concrêtement, tout va tenir dans la même table (quand même meilleur d'un point de vue lisibilité d'avoir les Ids en vif dans la table plutôt que de les externaliser dans une table externe avec une FK).
 


APP_CODE  |  VERSION  |  TYPE_NAME  |  MESSAGE  
=================================================
          |           |             |          


 
Les 3 premières colonnes représentent la PK (ma classe Identifier)
La 3ième colonne correspond à la sous-classe ObjectType (fille de Identifier)
La 4ième colonne est portée directement par MonEntite
 
 
MA QUESTION :
Comment mapper ça dans mon .hbm.xml ????
 
passer par un UserType ?
oui mais pas moyen de mapper ça dans un Id :/
(ou du moins je n'ai pas trouvé :( )
 
 
 
Merci d'avance pour votre aide  :jap:

mood
Publicité
Posté le 08-06-2011 à 18:40:16  profilanswer
 

n°2081429
cartemere
Posté le 08-06-2011 à 20:37:48  profilanswer
 

Bon j'ai rien dit j'ai trouvé la solution ce soir avant de partir... toute conne d'ailleurs : en fait rien n'empêche de déclarer un Id avec un UserType en spécifiant les multiples colonnes, de cette manière :

Code :
  1. <class name="MonEntite">
  2.    <id name="id"
  3.        type="com.xxx.yyy.IdentifierType">
  4.          <column name="APP_CODE"/>
  5.          <column name="VERSION"/>
  6.          <column name="TYPE_NAME"/>
  7.    </id>
  8.    <property
  9.        name="message"
  10.        type="String"
  11.        column="MESSAGE" />
  12. </class>


 
 
la classe IdentifierType implémente UserType (je posterai un contenu générique demain)
 
 
 
Bref, je ne sais pas ce qui m'a pris de me dire que ce n'était pas possible de faire simple (et donc pourquoi je ne trouvais pas de solution compliquée  :D )


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA][HIBERNATE] Id via UserType

 

Sujets relatifs
Liste d'objet DEBUTANT JAVAaffichage List java
insertion d'une image a l'aide du OrdImage en javaxml java
exécuter une chaine en java[java] Donner "avantage" à un thread
Hibernate javaerreur methode java
Erreur code java String[][] 
Plus de sujets relatifs à : [JAVA][HIBERNATE] Id via UserType


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR