Bonjour,
Je suis sur un projet où mon application java web est en multi langue.
Nous avons des tables de paramètre qui sont utilisées pour les listes déroulantes... et les libellés sont gérés dans toutes les langues.
J'invente un exemple, on crée une table client et une table type_client avec leur BO respectifs.
La table client :
id - Long (clé primaire)
nom - String
prenom - String
type_client - Long
La table type_client :
id - Long - (clé multiple)
id_langue - Long - (clé multiple)
libelle - String
La table type_client ne respecte pas les normes de jointures SQL puisque je ne peux pas créer de clé étrangère qui va de
client à type_client et refaire les tables différemment n'est pas autorisé. en effet la table client n'a pas de champ "langue" pour faire une vrai jointure. La langue je l'ai dans une variable de session
pour mes requêtes sql si je veux afficher une liste de client avec le libellé de son type et dans la langue de l'appli, je n'ai aucun problème pour l'écrire et la langue je l'obtiens via une variable de session.
Par contre j'ai l'obligation de l'écrire en HQL. Et les choses se compliquent.
Avez-vous une solution pour que je puisse lier via les fichiers hbm ces 2 tables sachant comme je l'ai précisé j'ai la langue au moment de l'appel à la méthode dao.
sur le fichier de mapping pour client j'ai essayé de créer un champ "langue" sans pointer sur une colonne pour faire une jointure multiple
mais ça plante à la requête (mais pas au démarrage du serveur).
Autrement peut-etre avoir une liste de type_client dans toutes les langues dans "client" mais je ne sais pas l'écrire dans le hbm ni comment faire la requête HQL pour exploiter que le premier de la liste.
merci pour vos réponses car pour le moment je vais devoir boucler mon premier résultat et refaire un requête pour chaque ligne afin d'avoir le libellé dans la bonne langue. C'est frustrant en terme de performance.
cdt
Partager