Author: tchemit Date: 2012-05-10 01:27:55 +0200 (Thu, 10 May 2012) New Revision: 2464 Url: http://nuiton.org/repositories/revision/topia/2464 Log: fix delete query for many-to-many Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java 2012-05-09 18:38:07 UTC (rev 2463) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java 2012-05-09 23:27:55 UTC (rev 2464) @@ -581,7 +581,15 @@ String attrClassifierDBName = TopiaGeneratorUtil.getDbName(attr.getClassifier()); String attrJoinTableName = TopiaGeneratorUtil.getManyToManyTableName(attr); String attrReverseDBName = TopiaGeneratorUtil.getReverseDbName(attr); + String reverseAttrNameProperty = + attrType + "." + getConstantName(reverseAttrName); + // Add DAOHelper + String daoHelper = modelName + "DAOHelper"; + String daoHelperFQN = getOutputProperties(). + getProperty(PROP_DEFAULT_PACKAGE) + '.' + daoHelper; + addImport(result, daoHelperFQN); + //FIXME_-FC-20100413 Use a TopiaQuery (use HQLin elements) // // Add DAOHelper // String daoHelper = modelName + "DAOHelper"; @@ -611,13 +619,22 @@ body.append("" /*{ { - List<<%=attrType%>> list = getContext().getEntityManager().createNativeQuery( - "SELECT main.topiaid " + - "from <%=attrClassifierDBName%> main, <%=attrJoinTableName%> secondary " + - "where main.topiaid=secondary.<%=attrDBName%>" + - " and secondary.<%=attrReverseDBName%>='" + entity.getTopiaId() + "'") - //.addEntity("main", <%=providerFQN%>(<%=attrType%>.class)) + Class<?> attrTypeImpl = <%=daoHelper%>.getImplementationClass(<%=attrType%>.class); + List<<%=attrType%>> list = getContext().getEntityManager().createQuery( + " SELECT B" + + " FROM "+ attrTypeImpl.getName() + " B," + + entity.getClass().getName() + " A" + + " WHERE A IN ELEMENTS(B." + <%=reverseAttrNameProperty%> + ")" + + " AND A = :A") + .setParameter("A", entity) .getResultList(); +// List<<%=attrType%>> list = getContext().getEntityManager().createNativeQuery( +// "SELECT main.topiaid " + +// "from <%=attrClassifierDBName%> main, <%=attrJoinTableName%> secondary " + +// "where main.topiaid=secondary.<%=attrDBName%>" + +// " and secondary.<%=attrReverseDBName%>='" + entity.getTopiaId() + "'") +// //.addEntity("main", <%=providerFQN%>(<%=attrType%>.class)) +// .getResultList(); for (<%=attrType%> item : list) { item.<%=removeName%>(entity);