you could substitute "<select" with *<statement...*. This should work, I hope.
Greetings,
Olaf
On 5/8/06, Michal Bartmanski <[EMAIL PROTECTED]> wrote:
Hi Torsten,
i thnk you're missing a parameterMap or parameterClass attribute in getColorForArticle statement.
gruss
michal
-----Ursprüngliche Nachricht-----
Von: Torsten Michelmann [mailto: [EMAIL PROTECTED]]
Gesendet: Montag, 8. Mai 2006 11:55
An: user-java@ibatis.apache.org
Betreff: Problem with complex properties mapping
Hi,
I am new to DataMapper and it might be that my problem is rather easy to
spot so please bear with me if the problem is trivial but I was not able to
solve it for a few days now and I would be glad for any help.
I am running queries against an AS/400 using
com.ibm.as400.access.AS400JDBCDriver
The error message that I get is
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in so/global/persistence/map/pdm/Tobas_SqlMap.xml.
--- The error occurred while applying a parameter map.
--- Check the getColorForArticle-InlineParameterMap.
--- Check the parameter mapping for the 'sais' property.
--- Cause: java.lang.ArrayIndexOutOfBoundsException : 1
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:188)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList (GeneralStatement.java:123)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:610)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList (SqlMapExecutorDelegate.java:584)
at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:101)
at
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java :78)
And the mapping looks like
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
" http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="MyApp">
<resultMap id="readArticles_Result" class="Article">
<result property="articleKey.articleId" column="articleid" />
<result property="articleName" column="fobz" />
<result property="formGroupKey.formGroupId" column="fogr" />
<result property="articleColoursList"
column="{finr=finr,sais=sais,koll=koll,form=form,arnr=arnr}"
select="getColorForArticle" />
</resultMap>
<resultMap id="getColor_Result" class="ArticleColourBase">
<result property="articleColourKey.articleColourId"
column="fbnr" />
<result property="label" column="fbez" />
</resultMap>
<select id="readArticlesByCollection" parameterClass="CollectionKey"
resultMap="readArticles_Result">
<![CDATA[
select distinct a.koll concat '.' concat a.sais concat '.' concat
substr(a.form, 3) concat '.' concat substr(a.arnr, 3) articleid , a.sais
sais, a.koll koll , a.form form, a.arnr arnr, a.fogr fogr, a.finr finr,
a.fobz fobz
from sodta.bavksl a
where
a.finr= (select distinct finr from sodta.bckollp where finr<= '060' and
sgmt=#segmentId# and glkz='J' )
and ( a.sais= #seasonId# or sais ='899') and a.koll in (select koll from
sodta.bckollp where finr<= '060'
and sgmt=#segmentId# and glkz='J' ) and a.glkz='A'
order by articleid
]]>
</select>
<select id="getColorForArticle" resultMap="getColor_Result">
<![CDATA[
select distinct a.fbnr fbnr,
case when a.fbez = ''
then b.fbez else a.fbez end fbez
from sodta.bavfsl a left outer join sodta.bavfnl b
on a.finr=b.finr
and a.sais=b.sais and a.koll=b.koll and a.fbnr=b.fbnr
where a.finr = #finr# and a.sais = #sais# and a.koll = #koll# and a.form =
#form# and a.vacp='' and a.arnr= #arnr#
and a.glkz='A' order by fbnr
]]>
</select>
</sqlMap>
I have experimented with the parameter sequence of
<result property="articleColoursList"
column="{finr=finr,sais=sais,koll=koll,form=form,arnr=arnr}"
select="getColorForArticle" /> but this did not yield any results.
A test of complex properties mapping using a simple data setup was
successful, so I am now out of ideas.
Any help would be appreciated.
Greetings
Torsten
--
Greetings
Torsten
"Feel free" - 10 GB Mailbox, 100 FreeSMS/Monat ...
Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail