[ 
http://issues.apache.org/jira/browse/IBATIS-264?page=comments#action_12367195 ] 

Nils Winkler commented on IBATIS-264:
-------------------------------------

I pretty much agree with your reasoning, that's why I categorized it as a minor 
improvement.

Our current use case looks like this: We're using inheritance in the conceptual 
data model to include a certain set of columns in pretty much every table, e.g. 
for auditing (last update user, last update timestamp, etc.). Because of this, 
I easily end up with the same columns from two tables in the query.

I currently add an attribute "tableAlias" in my DAO to the parameter map, which 
I then use in the sql snippet:

<sql id="inc">
    $tableAlias$name,
    $tableAlias$value,
    $tableAlias$foo,
    $tableAlias$bar
</sql> 

, but this is ugly, since I have to know the table alias in the DAO, while the 
rest of the SQL is in the XML mapping file.

Another option for getting rid of our hack would be to make it possible to set 
a property in the mapping file, e.g. before including the sql snippet:

<setProperty name="tableAlias" value="a" />
<include refid="inc" />

How's about that?


> Include with parameter
> ----------------------
>
>          Key: IBATIS-264
>          URL: http://issues.apache.org/jira/browse/IBATIS-264
>      Project: iBatis for Java
>         Type: Improvement
>   Components: SQL Maps
>     Versions: 2.1.7
>     Reporter: Nils Winkler
>     Priority: Minor

>
> I have the following problem: I include the same SQL snippet from
> multiple select statements, some of them for completely unrelated
> tables. This is done because these tables contain quite a few columns
> with the same names in both tables.
> <sql id="inc">
>     name,
>     value,
>     foo,
>     bar
> </sql>
> <select id="loadA">
>     select id,
>     <include refid="inc" />
>     from A
> </select>
> <select id="loadB">
>     select id,
>     <include refid="inc" />
>     from B
> </select>
> When including the list of columns, it would be quite handy to add a
> parameter to the include, for example to set a table alias in case I
> have a join between tables:
> <select id="loadA">
>     select a.id, b.id,
>     <include refid="inc" />
>     from A a
>     inner join B b on (b.id = a.id)
>     where b.baz = #baz#
> </select>
> In the above query, "name", "value" etc are no longer unique in the
> query, most of the time you end up with the wrong values.
> It would be great if I would be able to pass in a parameter to the
> include, e.g.:
> <select id="loadA">
>     select a.id, b.id,
>     <include refid="inc" param="a."/>
>     from A a
>     inner join B b on (b.id = a.id)
>     where b.baz = #baz#
> </select>
> so I could have the SQL snippet defined like this:
> <sql id="inc">
>     $param$name,
>     $param$value,
>     $param$foo,
>     $param$bar
> </sql>
> This way, all of the statements would still work and I could make sure
> that the correct columns are used in each case.

-- 
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

Reply via email to