r1866 - trunk/topia-persistence/src/main/java/org/nuiton/topia/generator
Author: fdesbois Date: 2010-04-01 15:28:35 +0200 (Thu, 01 Apr 2010) New Revision: 1866 Log: Evo #437 : Add tagvalue "inverse" on attributes used for a N-N association Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityHibernateMappingGenerator.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityHibernateMappingGenerator.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityHibernateMappingGenerator.java 2010-03-31 08:41:27 UTC (rev 1865) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityHibernateMappingGenerator.java 2010-04-01 13:28:35 UTC (rev 1866) @@ -500,7 +500,20 @@ boolean isInverse = attr.isNavigable() && attr.getReverseAttribute().isNavigable(); //isInverse |= !Util.isFirstAttribute(attr); //isInverse = false; // 20070117 poussin: pour du many, jamais de inverse - isInverse &= GeneratorUtil.isFirstAttribute(attr); + + // Modification FD-2010-04-01 : + // Le tagvalue "inverse" permet de spécifier qui possède le + // inverse="true". Il est impératif de l'utiliser sur les deux + // extrémités pour ne pas avoir de surprise. + if (attr.hasTagValue(TopiaGeneratorUtil.TAG_INVERSE)) { + isInverse &= Boolean.parseBoolean( + attr.getTagValue(TopiaGeneratorUtil.TAG_INVERSE)); + // Si aucun tagvalue n'est défini, le choix est arbitraire : le + // premier attribut dans l'ordre alphabétique sera choisi pour porter le + // inverse="true" + } else { + isInverse &= GeneratorUtil.isFirstAttribute(attr); + } boolean needsIndex = attr.isIndexed(); String cascade = ""; Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java 2010-03-31 08:41:27 UTC (rev 1865) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java 2010-04-01 13:28:35 UTC (rev 1866) @@ -148,6 +148,14 @@ */ public static final String TAG_ERROR_ARGS = "errorArgs"; /** + * Tag pour permettre de choisir qui contrôle la relation N-N + * bidirectionnelle. A utiliser sur les deux extremités de l'association. + * Mettre inverse=false sur le rôle fils et inverse=true sur le rôle père. + * Par défaut le inverse=true est placé sur le premier rôle trouvé dans + * l'ordre alphabétique. + */ + public static final String TAG_INVERSE = "inverse"; + /** * Tag pour spécifier la caractère lazy d'une association multiple */ public static final String TAG_LAZY = "lazy";
participants (1)
-
fdesbois@users.nuiton.org