Bonjour,
J'ai une application web qui utilise une table de traduction pour avoir une internationalisation sur les descriptions et noms de plusieurs objets.
Table typeCatalogue :
- ID (INT key)
- ...
Table traductions :
- ID (INT key)
- tableID (INT) -> ID de l'objet dans sa table
- nomTable (STRING)
- nomColonne (STRING)
- langueID (INT)
- description (STRING)
En programmation normale SQL voici comment je fonctionne :
Code:
"SELECT tc.*, t.description" +
" FROM typeCatalogue tc" +
// description
" LEFT JOIN traductions t ON t.nomTable = 'typeCatalogue'" +
" AND t.nomColonne = 'desc'" +
" AND t.tableID = tc.ID" +
" AND t.langueID = ?" +
" WHERE tc.ID = ?"
À noter que la jointure se fait sur l'ID de la table typeCatalogue et tableID puis nomTable et nomColonne qui sont fixes.
Exemple de solution qui m'intéresserait, avec la <formula> je pourrais ajouter les informations nécessaires dans la clause ON :
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class dynamic-insert="false" dynamic-update="false" mutable="true" name="com.importationsthibault.website.general.helper.CatalogType" optimistic-lock="version" polymorphism="implicit" select-before-update="false" table="typeCatalogue">
<id column="ID" name="id">
<generator class="native"/>
</id>
<!-- property column="description" name="description"/ -->
<bag name="descriptions" table="traductions" lazy="false">
<key column="tableID"/>
<one-to-many
class="com.importationsthibault.website.general.helper.TranslationValue"
formula="nomTable = 'typeCatalogue' AND nomColonne = 'desc'"
/>
</bag>
<property column="sequence" name="order"/>
<property column="actif" name="active"/>
</class>
</hibernate-mapping>
Une patch a été créée pour cette utilisation :
http://opensource.atlassian.com/project ... e/HHH-2086 en relation avec la demande de feature :
http://opensource.atlassian.com/project ... se/HHH-944J'aimerais savoir si quelqu'un a utilisé cette patch avec succès ou s'il y a un autre moyen de charger les descriptions de toutes les langues avec un <one-to-many> ou autre?
Merci d'avance!
Alexandre.