ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anoop kumar V <anoopkum...@gmail.com>
Subject Re: Newbie question: Update table that has no key / id
Date Tue, 25 Aug 2009 19:25:35 GMT
Yes - that was it. It is all working great now. not a single issue with
this..

thank you so much for all your help and I know I just needed to be more
careful with my typos...

Thanks,
Anoop


On Tue, Aug 25, 2009 at 3:18 PM, Anoop kumar V <anoopkumarv@gmail.com>wrote:

> Oops - that is a big typo. I really need to be more careful. Let me set
> that right and test again.
>
> Thanks,
> Anoop
>
>
>
> On Tue, Aug 25, 2009 at 3:02 PM, Rick <rickcr@gmail.com> wrote:
>
>> no clue what your table looks like but this doesn't seem right: iamsId for
>> both?
>>
>> where
>>             iams_id = #old.iamsId:VARCHAR#
>>             //....
>>             and isactive=#old.iamsId:VARCHAR#
>>
>>
>>
>> On Tue, Aug 25, 2009 at 2:29 PM, Anoop kumar V <anoopkumarv@gmail.com>wrote:
>>
>>> Hi Rick,
>>>
>>> yes that was one of the typos in my earlier email, but I have corrected
>>> that among other stuff (embarassing)!! My last email was also copy paste
>>> from my sqlmap and does not have that issue... My question is about the
>>> syntax to access a an attribute of an object that is passed as a value of
>>> map.
>>>
>>> Thanks,
>>> Anoop
>>>
>>>
>>>
>>> On Tue, Aug 25, 2009 at 2:16 PM, Rick <rickcr@gmail.com> wrote:
>>>
>>>> Was that copy and paste? I think you want "new.divisionName" now
>>>> "newdivisionName" (assuming "new" is the key)
>>>>
>>>>
>>>> On Tue, Aug 25, 2009 at 11:40 AM, Anoop kumar V <anoopkumarv@gmail.com>wrote:
>>>>
>>>>> Hi Larry,
>>>>>
>>>>> Was wondering if you could help me clarify one thing more...
>>>>>
>>>>> I have my sqlmap as below:
>>>>>
>>>>> <update id="updateUserApprover" parameterClass="java.util.Map">
>>>>>     update user_approvers
>>>>>             set iams_id = #new.iamsId:VARCHAR#,
>>>>>             set region_name = #new.regionName:VARCHAR#,
>>>>>             division_name = #newdivisionName:VARCHAR#,
>>>>>             isactive = #new.isActive:VARCHAR#
>>>>>     where iams_id = #old.iamsId:VARCHAR#
>>>>>     and region_name = #old.regionName:VARCHAR#
>>>>>     and division_name=#old.divisionName:VARCHAR#
>>>>>     and isactive=#old.iamsId:VARCHAR#
>>>>>   </update>
>>>>>
>>>>> I am passing a map that has 2 objects which is coming from my bean, the
>>>>> keys are "old" and "new" and each have a userApprover object as the value.
>>>>> Map<String, UserApprover> param = new HashMap<String, UserApprover>();
>>>>>
>>>>> So when I put: #new.iamsId:VARCHAR# will the sqlmap be able to
>>>>> understand that it needs to go inside the map and pull the property from
the
>>>>> bean?
>>>>>
>>>>> I am getting the following error when I use it this way:
>>>>>
>>>>> 09/08/25 11:29:40 com.ibatis.common.jdbc.exception.NestedSQLException:
>>>>> --- The error occurred in sqlmap/userapprover_sqlMap.xml.
>>>>> --- The error occurred while applying a parameter map.
>>>>> --- Check the updateUserApprover-InlineParameterMap.
>>>>> --- Check the statement (update failed).
>>>>> --- Cause: java.sql.SQLException: ORA-01747: invalid user.table.column,
>>>>> table.column, or column specification
>>>>>
>>>>> The other way is that I can completely forget about my bean and just
>>>>> put everything into my map as <String, String>, but I dont think
that is a
>>>>> very nice thing to do... any suggestions please?
>>>>>
>>>>> Thanks,
>>>>> Anoop
>>>>>
>>>>>
>>>>> On Mon, Aug 24, 2009 at 10:02 AM, Anoop kumar V <anoopkumarv@gmail.com
>>>>> > wrote:
>>>>>
>>>>>> I understand. Thank you very much.
>>>>>>
>>>>>> -Anoop
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Aug 24, 2009 at 9:20 AM, Larry Meadors <
>>>>>> larry.meadors@gmail.com> wrote:
>>>>>>
>>>>>>> Not if those values can change.
>>>>>>>
>>>>>>> If they are immutable, then that makes it easier, because you
can
>>>>>>> update based on them.
>>>>>>>
>>>>>>> Larry
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Aug 24, 2009 at 7:10 AM, Anoop kumar V<anoopkumarv@gmail.com>
>>>>>>> wrote:
>>>>>>> > Thanks Larry. I think your suggestion will work, but I was
hoping
>>>>>>> > there was an ibatis way of handling this - or that I could
use the
>>>>>>> > database specific rownum or something similar.
>>>>>>> >
>>>>>>> > Would it make a big difference if the table had a composite
key,
>>>>>>> such
>>>>>>> > that no 2 rows have exactly the same column values?
>>>>>>> >
>>>>>>> > Thanks again,
>>>>>>> > Anoop
>>>>>>> >
>>>>>>> > On 8/23/09, Larry Meadors <larry.meadors@gmail.com>
wrote:
>>>>>>> >> You can do it a few ways, I think I'd put the old values
and new
>>>>>>> >> values in a bean, then put those beans in a map and
call them
>>>>>>> "old"
>>>>>>> >> and "new".
>>>>>>> >>
>>>>>>> >> Pass that map to the update and change it to this:
>>>>>>> >>
>>>>>>> >>   <update id="updateUserApprover">
>>>>>>> >>     update user_approvers set region_name = #new.region:VARCHAR#,
>>>>>>> >>                       division_name = #new.division:VARCHAR#,
>>>>>>> >>     where user = #old.user:VARCHAR#
>>>>>>> >>     and region = #old.region:VARCHAR#
>>>>>>> >>     and division=#old.division:VARCHAR#
>>>>>>> >>   </update>
>>>>>>> >>
>>>>>>> >> Larry
>>>>>>> >>
>>>>>>> >>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> >> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>>>>>> >> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>>>> >>
>>>>>>> >>
>>>>>>> >
>>>>>>> >
>>>>>>> > --
>>>>>>> >
>>>>>>> > Thanks,
>>>>>>> > Anoop
>>>>>>> >
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Rick R
>>>>
>>>
>>>
>>
>>
>> --
>> Rick R
>>
>
>

Mime
View raw message