Correspondance d'identifiant primaire de composant

Pour plus de commodité, un identifiant composite peut être mis en oeuvre via une classe de type valeur séparée. L'identifiant primaire a juste un attribut ayant le type class. La classe séparée doit être définie comme classe de type valeur. La correspondance de classe de composant sera alors générée.

  1. Définissez un attribut d'identifiant primaire.
  2. Définissez le type de l'attribut comme une classe de type valeur.
  3. Définissez la propriété Classe de générateur de l'attribut d'identifiant primaire à Embedded.
  4. Définissez le type valeur de la classe d'identifiant primaire à true.
  5. Définissez une correspondance pour la classe d'identifiant primaire.


Dans l'exemple ci-dessous, trois attributs liés au nom sont groupés dans une classe distincte Name. Cette classe est mise en correspondance avec la même table que la classe Person. L'identifiant primaire généré se présente comme suit :

<composite-id name="name" class="identifier.Name">
  <key-property name="firstName">
    <column name="name_firstName"
    sql-type="text"/>
  </key-property>
  <key-property name="middleName">
    <column name="name_middleName" 
    sql-type="text"/>
  </key-property>
  <key-property name="lastName">
    <column name="name_lastName" 
    sql-type="text"/>
  </key-property>
</composite-id>

Remarque : La classe de type valeur doit réaliser l'interface java.io.Serializable, qui met en oeuvre les méthodes equals() et hashCode().