You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Jeff Butler (JIRA)" <ib...@incubator.apache.org> on 2006/04/06 18:32:29 UTC
[jira] Closed: (IBATIS-285) ABATOR SQL map generator creates
incorrect XML maps using Sybase and Oracle
[ http://issues.apache.org/jira/browse/IBATIS-285?page=all ]
Jeff Butler closed IBATIS-285:
------------------------------
> ABATOR SQL map generator creates incorrect XML maps using Sybase and Oracle
> ---------------------------------------------------------------------------
>
> Key: IBATIS-285
> URL: http://issues.apache.org/jira/browse/IBATIS-285
> 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