Bonjour,

pourriez-vous svp me confirmer la démarche pour ce contexte d'utilisation des générateurs d'identifiant :

la clé primaire de plusieurs entités de ma ma base de données est issu d'une incrémentation manuelle d'un entier qui est stockée dans une table dédiée à cela.

Cette table est donc similaire à un "gestionnaire de séquences" (sous MySQL).
Pour identifier le nouvel incrément à utiliser lors d'une insertion dans l'une des tables citées ci-dessus, deux critères sont nécessaire :
le nom de l'entité
un numéro de "segment"

Autrement dit le schéma de la table stockant les séquences ressemble à ceci:
"entity_name" | "segment" | "new_increment"
________________________________________
X | a | 10
X | b | 5
Y | a | 2
Z | a | 3

Donc à chaque nouvelle entité, j'aimerai qu'Hibernate aille rechercher la valeur de la PK dans cette table (avec deux criètres, entity_name et segment) et que "new_increment" soit incrémenté

Je me suis donc documenté mais j'avoue avoir du mal à bien retrouver l'information qui me faut.

Je suis tombé sur ceci:
org.hibernate.id.enhanced.TableGenerator
Le problème, c'est qu'on ne peut donner qu'un seul critère de recherche dans la table qui stocke les séquences, alors que j'en possède deux (entity_name et segment)

D'où ma question, existe-t'il une implémentation de générateur d'IDs dans Hibernate qui puisse répondre à ce besoin?

Dans le cas contraire, si je ne me trompe, je dois implémenter une classe héritant de IdentifierGenerator et redéfinir la méthode generate qui reçoit la session et l'objet : j'effectue alors moi même les requêtes vers ma table séquence et je retourne le nouvel id.

Donc en résumé, si Hibernate ne propose pas de générateur collant à mon besoin, mieux vaut-il :
  1. implémenter une classe génératrice
  2. ou passer en mode "assigned" et laisser la couche "métier" le soin d'attribuer lui même l'identifiant aux objets qu'il souhaite persister?


Je vous remercie de votre aide.

Bonne journée