ABATOR SQL map generator creates incorrect XML maps using Sybase and Oracle ---------------------------------------------------------------------------
Key: IBATIS-284 URL: http://issues.apache.org/jira/browse/IBATIS-284 Project: iBatis for Java Type: Bug Components: DAO Versions: 2.1.7 Environment: IBATIS 2.1.7, Abator 0.6.1, Sybase or Oracle DB 9.i, JAVA Reporter: Fischer Christian I generated SQL maps and DAO classes using the ABATOR generator and the Eclipse plugin. The datasoruce is either Sybase or an Oracle 9.i DB. The problem is the generated SQL maps are not correct! In general all definitions which starts with 'abatorgenerated_' are missing the prefix containing [schema]_[tablename]. Because they are referenced in the same XML map file and also from IBATIS classes using the prefix you get errors like: com.ibatis.common.exception.NestedRuntimeException: Could not find SQL statement to include with refid 'schema_tablename.abatorgenerated_Example_Where_Clause' There is an include in the map file like: <include refid="schema_tablename.abatorgenerated_Example_Where_Clause"/> But the definition is: <sql id="abatorgenerated_Example_Where_Clause"> So the problem is fixed either by removing the prefix in the include or appending it in the definition. I checked the ABATOR source code and found the problem immediately in SqlMapGeneratorDefaultImpl.java. The code to generate above refid attributes is: addAttribute(xml, "refid", getSqlMapNamespace(tableConfiguration.getTable()) + "." + getExampleWhereClauseId()); whereas the code to generate e.g. above <sql id="abatorgenerated ... tags is: protected String getExampleWhereClauseId() { return "abatorgenerated_Example_Where_Clause"; } My quick solution was to remove the getSqlMapNamespace(tableConfiguration.getTable()) + "." in the code where the refid attributs are generated. But unfortunately the XML map is also accessed directly by the IBATIS classes which also appends the prefix. This affects all methods like: public String getInsertStatementId() public String getSelectByExampleStatementId() .... So I think the solution should be to change all these getXXXId() methods to append the schema + tablename prefix at he start of the return string. But this requires access to the tableConfiguration object which is not a class member variable. I got the same problems using Sybase and Oracle DB. No idea how that should work using DB/2? Best regards Christian Fischer -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira