ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alan Chandler <a...@chandlerfamily.org.uk>
Subject Re: Group By for multiple column primary keys
Date Sat, 15 Oct 2005 10:07:10 GMT
On Friday 14 Oct 2005 23:01, Alan Chandler wrote:
...
> >
> > I think the manual implies this - is it correct?
> >
> > <resultMap id="family-list" class="family"
> > 	groupBy="a_key" >
> > 	<result property=a_key column="{marriage.spouse.id = sid, marriage.m_no
> > =m_no}" />
> >
> > ... (ignoring mail wordwrap issues)
>
> This doesn't work
>
> I get a Runtime exception
>
> Caused by: com.ibatis.common.beans.ProbeException: There is no WRITEABLE
> property named 'a_key' in class
> 'uk.org.chandlerfamily.sqlmap.famtree.Family'

So I made a writeable property,

but I now getting this message

Caused by: com.ibatis.sqlmap.client.SqlMapException: No type handler could be 
found to map the property 'marriage.mkey' to the column 
'{spouseid=sid,mno=m_no}'. One or both of the types, or the combination of 
types is not supported.

So HOW DO I make this work?

My Result map fragment is 

	<resultMap id="family-list" class="family"
		groupBy="marriage.mkey" >
		<result property="marriage.mkey" column="{spouseid=sid,mno=m_no}"/>
,,,

And so as to incorprate marriage.mkey as the property I created a class MKey 
(all the private variables have an appropriate getters and setters)

public class Mkey {
	private int spouseid;
	private short mno;
...
}

The Family class refered to in the result map is as follows (together with the 
Marriage class which is the type of one of the variables - and again there 
are getters and setters for the private variables AND a special getter and 
setter for a psuedo mkey variable)

public class Family  { 
	private Marriage marriage; 
...
}

public class Marriage { 
	private PersonSummary spouse; 
	private short m_no; 
...
       	public void setMkey (Mkey mkey) { 
		spouse.setId(mkey.getSpouseid()); 
		m_no=mkey.getMno(); 
	} 
	 
	public Mkey getMkey() { 
		return new Mkey(spouse.getId(),m_no); 
	} 
...
}

-- 
Alan Chandler
http://www.chandlerfamily.org.uk
Open Source. It's the difference between trust and antitrust.

Mime
View raw message