[ http://issues.apache.org/jira/browse/IBATIS-284?page=all ] Jeff Butler closed IBATIS-284: ------------------------------
> 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