Index: topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java diff -u topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java:1.31 topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java:1.32 --- topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java:1.31 Thu Nov 23 13:51:11 2006 +++ topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java Thu Jan 18 21:58:47 2007 @@ -24,10 +24,10 @@ * Created: 12 déc. 2005 * * @author Arnaud Thimel -* @version $Revision: 1.31 $ +* @version $Revision: 1.32 $ * -* Mise a jour: $Date: 2006/11/23 13:51:11 $ -* par : $Author: ruchaud $ +* Mise a jour: $Date: 2007/01/18 21:58:47 $ +* par : $Author: bpoussin $ */ package org.codelutin.topia.generator; @@ -290,14 +290,21 @@ } else { orderBy = "order-by=\"" + orderBy + "\""; } + + String cascade = ""; + if (attr.isComposite() || attr.hasAssociationClass()) { + cascade += "cascade=\"all,delete-orphan\""; + } + cascade += ""; + if (!isIndexed) { -/*{ <%=((!isInverse)?"":"inverse=\"true\"")%> lazy="true" <%=((attr.isComposite() || attr.hasAssociationClass())?"cascade=\"delete,delete-orphan\"":"")%> node="<%=getName(attr)%>" embed-xml="true"> +/*{ <%=((!isInverse)?"":"inverse=\"true\"")%> lazy="true" <%=cascade%> node="<%=getName(attr)%>" embed-xml="true"> }*/ }else { -/*{ lazy="true"<%=((attr.isComposite() || attr.hasAssociationClass())?" cascade=\"delete,delete-orphan\"":"")%> node="<%=getName(attr)%>" embed-xml="false"> +/*{ lazy="true" <%=cascade%> node="<%=getName(attr)%>" embed-xml="false"> @@ -345,9 +352,18 @@ protected void generateHibernateManyToMany(Writer output, ObjectModelAttribute attr) throws IOException { // On ne met le inverse="true" uniquement pour un seul coté de la relation. // Dans le cas contraire, les modifications dans la relation ne seront - // pas sauvegardées + // pas sauvegardées. Ceci n'est vrai que si les deux coté sont navigable + boolean isInverse = attr.isNavigable() && attr.getReverseAttribute().isNavigable(); + isInverse |= !Util.isFirstAttribute(attr); + isInverse = false; // 20070117 poussin: pour du many, jamais de inverse boolean isIndexed = attr.isIndexed(); -/*{ <<%=(isIndexed?"list":"bag")%> name="<%=getName(attr)%>" table="<%=GeneratorUtil.getManyToManyTableName(attr)%>" <%=((!Util.isFirstAttribute(attr))?"inverse=\"true\" ":"")%> lazy="true"<%=((attr.isComposite() || attr.hasAssociationClass())?" cascade=\"delete,delete-orphan\"":"")%> node="<%=getName(attr)%>" embed-xml="true"> + String cascade = ""; + if (attr.isComposite() || attr.hasAssociationClass()) { + cascade += "cascade=\"delete,delete-orphan\""; + } + cascade += ""; + +/*{ <<%=(isIndexed?"list":"bag")%> name="<%=getName(attr)%>" table="<%=GeneratorUtil.getManyToManyTableName(attr)%>" <%=(isInverse?"inverse=\"true\" ":"")%> lazy="true" <%=cascade%> node="<%=getName(attr)%>" embed-xml="true"> }*/ if (isIndexed) {