It's not magic, but you could also use columnIndex in your result map instead of column - then you wouldn't need to do any renaming in the SQL statement.
Jeff Butler On Dec 5, 2007 4:48 PM, Brian Parkinson <[EMAIL PROTECTED]> wrote: > Thanks Jeff: > > > > Should have been more specific (long day) – iBATIS doesn't distinguish the > names – thought there might be some magic way to do this. No worries. > > > > Thanks for the help – answered both questions. > > > > Appreciated. > > > > parki... > > > > > ------------------------------ > > *From:* Jeff Butler [mailto:[EMAIL PROTECTED] > *Sent:* Wednesday, December 05, 2007 4:26 PM > *To:* [email protected] > *Subject:* Re: A couple newbie questions > > > > 1. Define "the join doesn't work". If you mean that the database chokes > on f.bork and b.bork then you have a seriously messed up database and you > should throw it out immediatly. > > > > If you mean that iBATIS can't distingush between the different columns, > then that is correct behavior. You need to rename at least one of the > columns (and the corresponding propery in your result object): > > > > select f.bork, b.bork as ANOTHER_BORK > > from ... > > > > 2. Batches are only for inserts, updates, deletes. They do not apply for > selects. > > > > Jeff Butler > > On Dec 5, 2007 3:57 PM, Brian Parkinson <[EMAIL PROTECTED]> wrote: > > Hello! > > > > I'm new to iBATIS, but loving it so far – decided to go with iBATIS as > opposed to Hibernate for simplicity, and to have arguably more control over > the SQL. I have a couple questions (apologies if these are covered in hthe > FAQ, but I couldn't find): > > > > 1. I have a pretty complex join, and so am using the groupBy pattern > (whereby the ResultMap for the top level object references child resultMaps, > with groupBy, and using LEFT OUTER joins) – basically straight from the > docs. It looks something like: > > > > <select id="Foo.select_by_id" parameterClass="string" > resultMap="FooResultMap"> > > SELECT > > f.name, f.address, f.phone, > > t.colour, t.shape, t.size > > FROM Foo f > > LEFT OUTER JOIN Bar b on f.ID <http://f.id/> = b.ID <http://b.id/> > > WHERE f.name = #value#; > > </select> > > > > This is cool – my real code has many more JOINs, but you get the idea. > > > > The problem is, if both the Foo table **and** the Bar table contain a > column with the ** same** name, then the JOIN doesn't work, even when > distinguished as f.bork and b.bork. > > > > Is there a workaround for this? > > > > 2. Due to the problem above, I'm running a number of select queries, and > building up the result (ie. in the example above, I'd make one query for the > Bar object(s) and then the Foo object and call foo.setBar(bar) to build > things up. > > > > The question – if I put this in a batch statement, can I expect a good > performance boost? > > > > Any help or tips on how best to structure this stuff is appreciated – I"m > comfortable with Java, but not much of a SQL expert (at all). > > > > Any help is greatly appreciated. > > > > Cheers, > > > > parki... > > > > ps. iBATIS is great so far. :) > > > > >
