Oops - that is a big typo. I really need to be more careful. Let me set that right and test again.
no clue what your table looks like but this doesn't seem right: iamsId for both?
iams_id = #old.iamsId:VARCHAR#
--On Tue, Aug 25, 2009 at 2:29 PM, Anoop kumar V <email@example.com> wrote:
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.
On Tue, Aug 25, 2009 at 2:16 PM, Rick <firstname.lastname@example.org> 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 <email@example.com> wrote:
Was wondering if you could help me clarify one thing more...
I have my sqlmap as below:
<update id="updateUserApprover" parameterClass="java.util.Map">
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#
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?
On Mon, Aug 24, 2009 at 10:02 AM, Anoop kumar V <firstname.lastname@example.org> wrote:I understand. Thank you very much.
On Mon, Aug 24, 2009 at 9:20 AM, Larry Meadors <email@example.com> wrote:Not if those values can change.
If they are immutable, then that makes it easier, because you can
update based on them.
On Mon, Aug 24, 2009 at 7:10 AM, Anoop kumar V<firstname.lastname@example.org> 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,
> On 8/23/09, Larry Meadors <email@example.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#
>> To unsubscribe, e-mail: firstname.lastname@example.org
>> For additional commands, e-mail: email@example.com