Hi Clinton,

I'm going to fill in one feature request for this issue.

Cheers,
Daniel Silva.

On 11/2/05, Clinton Begin <[EMAIL PROTECTED]> wrote:
>
>  Yeah, that's definitely something I want to work on.   I'd love to improve
> ParameterMaps so that they are simply external context (i.e. extra details)
> around named inline parameters.
>
>  I don't like ? marks any more than you do.  But for some reason I failed to
> think of that when I originally wrote the thing.  :-)
>
>  JIRA feature request anyone?
>
>  Cheers,
>  Clinton
>
>
>
> On 11/2/05, Niels Beekman <[EMAIL PROTECTED]> wrote:
> > Ah, now I see. When you use parameterMaps you should use ?'s instead of
> > using the inline #'s, you already mapped properties to fields, so there
> > is no need to do that again. When you want to use a property multiple
> > times you need to declare it multiple times in the parameterMap too. The
> > only thing you need to do is set the ?'s in the right place in the
> > query.
> >
> > Example:
> >
> > <parameterMap id="projetosDoUsuarioMap" class=" java.util.HashMap">
> >   <parameter property="l_superusuario" javaType="string"
> > jdbcType="VARCHAR"/>
> > </parameterMap>
> > <select id="projetosDoUsuario"
> parameterMap="projetosDoUsuarioMap"
> > resultClass="java.util.HashMap">
> >   SELECT DISTINCT a.CodigoUnesco
> >   FROM corporativo.CT_CC a
> >   WHERE a.ultimonivel = ? <--- gets replaced by the value of
> > l_superusuario
> > </select>
> >
> > It seems like you are trying to do lots of property comparisons rather
> > than DB-constraints (i.e. #l_superusuario# = 'S'), I believe you should
> > rather use $l_superusuario$ = 'S', but I suspect the $'s do not work in
> > combination with parameterMaps, but I did not test that, so you could
> > try it out...
> >
> > Good luck,
> >
> > Niels
> >
> > -----Original Message-----
> > From: Daniel Henrique Ferreira e Silva [mailto: [EMAIL PROTECTED]
> > Sent: woensdag 2 november 2005 13:37
> > To: [email protected]
> > Subject: Re: Problems applying parameter map property
> >
> > Hi Niels,
> >
> > Thanks for your reply.
> > I tried removing CDATA and it still doesn't work.
> >
> > I was talking to Larry last nigh about this issue and he pointed an
> > interesting issue with parameter maps. If you look at my statement,
> > you'll see that i use parameters more than once along the statement.
> > So, it seems that it'd be necessary to declare those parameters
> > following order and count in my statement. There is a statement in
> > documentation stating that but no examples. I tried that but hadn't
> > any success.
> >
> > So, i decided to stick to what works ok: inline parameters.
> > After finishing this project i'll try to look into this issue and
> > maybe write a Wiki entry about it with my findings.
> >
> > Cheers,
> > Daniel Silva
> >
> > On 11/2/05, Niels Beekman <[EMAIL PROTECTED]> wrote:
> > > Just a guess, can you try to remove the CDATA-tags? There have been a
> > > number of people that reported similar issues.
> > >
> > > Niels
> > >
> > > -----Original Message-----
> > > From: Daniel Henrique Ferreira e Silva [mailto:[EMAIL PROTECTED]
> > > Sent: woensdag 2 november 2005 2:01
> > > To: [email protected]
> > > Subject: Problems applying parameter map property
> > >
> > > Hey all,
> > >
> > > I'm getting an annoying error that is giving me such a great headache
> > > as i can't figure it out.
> > >
> > > Database: Oracle 9iR2
> > > Container: Resin 3.0.14
> > > OS: Windows XP SP2
> > > iBATIS version: 2.1.5.582
> > >
> > > Here is my problem:
> > >
> > > I have this statement with its parameter map:
> > >
> > >     <parameterMap id="projetosDoUsuarioMap" class="java.util.HashMap">
> > >         <parameter property="l_superusuario" javaType="string"
> > > jdbcType="VARCHAR" />
> > >         <parameter property="l_superconsulta" javaType="string"
> > > jdbcType="VARCHAR" />
> > >         <parameter property="l_prestacaocontas" javaType="string"
> > > jdbcType="VARCHAR" />
> > >         <parameter
> property="l_consultatodosmenosfitoca"
> > > javaType="string" jdbcType="VARCHAR" />
> > >         <parameter property="l_usuario" javaType="int"
> > jdbcType="NUMBER"
> > > />
> > >         <parameter property="l_documento" javaType="int"
> > > jdbcType="NUMBER" />
> > >         <parameter property="l_acesso" javaType="int"
> > jdbcType="NUMBER"
> > > />
> > >     </parameterMap>
> > >
> > >     <select id="projetosDoUsuario"
> parameterMap="projetosDoUsuarioMap"
> > >  resultClass="java.util.HashMap ">
> > >         <![CDATA[
> > >              select distinct codigoUnesco from (
> > >                  select distinct a.CodigoUnesco
> > >                  from corporativo.CT_CC a
> > >                  where a.ultimonivel = 'S'
> > >                    and (   #l_superusuario# = 'S'
> > >                         or (#l_superconsulta#='S' and (#l_acesso# is
> > > null or #l_acesso# = 14))
> > >                         or (#l_prestacaocontas#='S' and (#l_acesso# is
> > > null or #l_acesso# = 16))
> > >                         or (#l_consultatodosmenosfitoca# = 'S' and
> > > (#l_acesso# is null or #l_acesso# = 14) and a.un_tipoprograma not in
> > > ('FITOCA', 'RUNNING COSTS'))
> > >                        )
> > >                  union all
> > >                  select distinct a.CodigoUnesco
> > >                    from corporativo.Ct_CC a
> > >                   where a.ultimonivel = 'S'
> > >                    and (#l_superusuario# = 'N' or (#l_superconsulta# =
> > > 'N' and #l_acesso# = 14) or (#l_consultatodosmenosfitoca# = 'N' and
> > > #l_acesso# = 14))
> > >                    and a.handle in (         select distinct x.projeto
> > >                                                from
> > > corporativo.vw_solicitacao_permissao x
> > >                                               where
> > > x.sq_pessoa_beneficiada = #l_usuario#
> > >                                                 and
> x.sn_matriz = 'S'
> > >                                                 and
> (#l_documento# is
> > > null or x.paginaweb = #l_documento#)
> > >                                                 and
> (#l_acesso# is
> > > null or x.tramite = #l_acesso#)
> > >                                              union all
> > >                                              select
> distinct w.handle
> > >                                                from
> > > corporativo.vw_permissoes_especiais y
> > >
> inner join
> > > corporativo.z_grupousuarios z on (z.handle = y.usuario),
> > >
> corporativo.ct_cc
> > w
> > >                                               where
> z.pessoa =
> > > #l_usuario#
> > >                                                 and
> (#l_documento# is
> > > null or y.permissao = #l_documento#)
> > >                                                 and
> (#l_acesso# is
> > > null or y.tramite = #l_acesso#)
> > >                                                 and
> (y.projeto = 'S'
> > > or (y.projeto = 'N' and w.un_tipoprograma in ('FITOCA', 'RUNNING
> > > COSTS')))
> > >                                                 and
> w.ultimonivel =
> > 'S'
> > >                                                 and
> w.handle not in
> > > (select v.projeto
> > >
> > > from corporativo.vw_projetoemexcecao v
> > >
> > > where v.codigo = 'SG-001')
> > >                                     )
> > >              )
> > >              order by Codigounesco
> > >
> > >         ]]>
> > >     </select>
> > >
> > > When i run it i get this error in my log file:
> > >
> > > 2005-11-01 22:33:24,385 ERROR [resin-tcp-connection-*:8080-1]
> > > org.unesco.sicof.db.dao.impl.GeralDaoImpl -
> getProjetosDoUsuario
> > > failed!
> > > com.ibatis.common.jdbc.exception.NestedSQLException:
> > > --- The error occurred in
> org/unesco/sicof/config/geral.xml.
> > > --- The error occurred while applying a parameter map.
> > > --- Check the Geral.projetosDoUsuarioMap.
> > > --- Check the parameter mapping for the 'l_superusuario' property.
> > > --- Cause: java.sql.SQLException : Invalid column index
> > >
> > > In a first glance, everything seems to be fine.
> > > Any clue?
> > >
> > > Cheers,
> > > Daniel Silva.
> > >
> >
>
>

Reply via email to