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