Bonjour,

J'aimerais vous soumettre un problème de conception auquel je suis confronté.
J'espère que votre expérience en la matière pourra m'aider.

Je travaille sur un projet qui necessite la gestion de plusieurs langues dans le système d'information.
J'aimerais simplement signaler qu'il ne s'agit pas ici du besoin sommaire d'internationnaliser l'UI mais directement les données stockées.

Je vais essayer de prendre un exemple simple.
Je possède, dans mon SI, une entité Objet.
Cet objet dispose de caractéristiques non soumises à internat. :
- un identifiant alpha (ex: F16)
- une date de création (4564787484 ts)
- un poids (1000 kg)
- une taille (12 m)

Il dispose aussi de données internat. :
- nom commun
- description

Mon système possède un nombre de langues variables. Ces deux dernières propriétés, doivent pouvoir être initialisées dans la langue choisie au moment du chargement de mon Objet. L'instance d'Objet ne sais pas en quelle langue elle est décrite, seul l'environnement connait la langue.
Imaginez une boutique en ligne ou chaque objet du système possède une description dans la langue de l'utilisateur.

Du point de vue persistence, je possède 2 tables :
Objet (CodeObjet, Identifiant, DateCreation, Poids, Taille)
ObjetDescription (CodeObjet, CodeLangue, Nom, Description)

1/ Quel est la meilleure solution pour demander à hivernate de charger l'Objet (CodeObjet=1) avec la langue (CodeLangue=2) sans pour autant que le mapping hibernate considère que l'identifiant de Objet est composite (CodeObjet, CodeLangue) car ce n'est pas le cas ?

2/ Dois-je passer par un Critéria pour spécifier la langue de la requête au moment du chargement de mon Objet ?

3/ Dois-je utiliser la composition et créer une classe ObjetDescription ?

Merci de votre aide.