Okay Lisa tks But remember that the bean Person doesn´t have personId property and i don´t think adding it to be a good idea because person_id is an idea concerning data base not my bean or the bussinesses rules.
regards On 9/14/07, Lisa Jenkins <[EMAIL PROTECTED]> wrote: > > person_id column is not referenced is not in the resultMap, if you add > that, it should work.... > > > <resultMap id="resulMap-person" class="Person" groupBy="person_id"> > <result property="personId" column="person_id"/> > <result property="firstName" column="first_name"/> > <result property="lasttName" column="last_name"/> > <result property="addresses" resultMap="resultMap-adress"/> > </resultMap> > > Fábio Pisaruk wrote: > > Hi, > > > > Is there a way to use groupBy with a column name? > > I need to do so 'cause there is no property that uniquely identify the > > bean > > and i am not able to change it do add one. > > For example: > > Suppose i´ve got two tables: Person and Address. > > > > Person: > > person_id > > first_name > > last_name > > > > Address: > > person_id > > address_id > > address > > country > > city > > > > And two beans: > > Person > > firstName > > lastName > > addresses(Address[]) > > Address > > address > > country > > city > > > > My maps: > > > > <resultMap id="resulMap-person" class="Person" groupBy="person_id"> > > <result property="firstName" column="first_name"/> > > <result property="lasttName" column="last_name"/> > > <result property="addresses" resultMap="resultMap-adress"/> > > </resultMap> > > > > <resultMap id="resulMap-address" class="Address"> > > <result property="address" column="address"/> > > <result property="country" column="country"/> > > <result property="city" column="city"/> > > </resultMap> > > > > My sql: > > > > <select id="get-person-by-id" parameterClass="int" > > resultMap="resulMap-person"> > > select p.person_id,p.first_name,p.last_name,a.address,a.city, > a.country > > from Person p ,Address a > > where p.person_id=#value# and p.person_id=a.person_id > > </select> > > > > In doing so i am not getting the desired result. > > Person information are replicated for each address it contains. > > > > PS: I know two workarounds that i don´t consider good solutions: > > 1-) Creating a wrapperPerson with a person_id attribute and having > > Ibatis grouping result on it or > > 2-) using a nested select to get address for each person: > > <result property="addresses" select="get-addresses-by-person_id" > > column="person_id"/> > > <select id="get-addresses-by-person_id" parameterClass="int" > > resultMap="resultMap-adress"> > > select * from Address where person_id=#value# > > </select> > > > > Thanks in advance > > > > -- > > Visto como se não executa logo a sentença sobre a má obra, o coração > > dos filhos dos homens está inteiramente disposto a praticar o mal. > > > > > > --Nerd´s sign > > > > If you have four classes, Everybody, Somebody, Anybody, and Nobody, if > > Somebody has a bug, it could be Anybody 's fault but Nobody really > > knows, while Everybody shares responsibility. > > > > "Programming today is a race between software engineers striving to > > build bigger and better idiot-proof programs, and the universe trying > > to build bigger and better idiots. So far, the universe is winning." - > > Rick Cook > > -- Visto como se não executa logo a sentença sobre a má obra, o coração dos filhos dos homens está inteiramente disposto a praticar o mal. --Nerd´s sign If you have four classes, Everybody, Somebody, Anybody, and Nobody, if Somebody has a bug, it could be Anybody 's fault but Nobody really knows, while Everybody shares responsibility. "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning." - Rick Cook
