Looks like an issue with lazy loading..can you try it without and see
if it fixes the issue?
Larry
On 1/27/06, Joe Wolf <[EMAIL PROTECTED]> wrote:
>
> Here's some new insight into this problem. Look at how two objects of mine
> get serialized by XStream:
>
> <state class="my.model.Address-State--EnhancerByCGLIB--675f34ca">
> <CGLIB_DOLLAR_BOUND>true</CGLIB_DOLLAR_BOUND>
> <CGLIB_DOLLAR_CALLBACK__0
> class="com.ibatis.sqlmap.engine.mapping.result.loader.EnhancedLazyResultLoader-EnhancedLazyResultLoaderImpl"/>
> </state>
> <country class="my.model.Address-Country--EnhancerByCGLIB--24c53861">
> <CGLIB_DOLLAR_BOUND>true</CGLIB_DOLLAR_BOUND>
> <CGLIB_DOLLAR_CALLBACK__0
> class="com.ibatis.sqlmap.engine.mapping.result.loader.EnhancedLazyResultLoader-EnhancedLazyResultLoaderImpl"/>
> </country>
>
> It appears as IBATIS isn't creating instances of static inner classes like I
> would expcet. For reference, here's what my SQL map looks like
>
> <typeAlias alias="state" type="my.model.Address$State"/>
> <typeAlias alias="country" type="my.model.Address$Country"/>
>
> my.model.Address.State POJO has String code, String name, Country country.
> my.model.Address.Country POJO has String code, String name
>
> Also, there seems to be issues with some POJOs that implement a common
> interface, my.model.Type. They're being serialized as
> <status class="my.model.Type--EnhancerByCGLIB--a88b2d31">
> <CGLIB_DOLLAR_BOUND>true</CGLIB_DOLLAR_BOUND>
> <CGLIB_DOLLAR_CALLBACK__0
> class="com.ibatis.sqlmap.engine.mapping.result.loader.EnhancedLazyResultLoader-EnhancedLazyResultLoaderImpl"/>
> </status>
>
> On January 27, 2006, Joe Wolf wrote:
>
> >
> > I have a fairly interesting problem involving iBATIS 2.1.5 and XStream
> > 1.1.2. I have some POJOs that get created by iBATIS when I run some
> > queries. I then serialize them to XML through XStream--however, I'm
> > getting a StackOverflowError when doing so. Through debugging, I found
> > that XStream is eventually encountering within my POJOs a
> > com.ibatis.sqlmap.engine.exchange.DataExchangeFactory object and then a
> > com.ibatis.sqlmap.engine.exchange.DomDataExchange object, and then it finds
> > another DataExchangeFactory and DomDataExchange, and so on, cycling until
> > the stack overflows. But this begs the question, how are these ibatis
> > objects getting into my POJOs?
> >
> > The only thing I can think of is that I'm using java.math.BigIntegers for
> > my numeric IDs, so I wrote a callback to help handle them:
> >
> > public class BigIntegerTypeHandlerCallback implements TypeHandlerCallback {
> > public void setParameter(ParameterSetter setter, Object parameter) throws
> > SQLException {
> > if (parameter != null)
> > setter.setLong(((BigInteger)parameter).longValue());
> > }
> > public Object getResult(ResultGetter getter) throws SQLException {
> > return getter.getString() == null ? null : new
> > BigInteger(getter.getString());
> > }
> > public Object valueOf(String val) {
> > return val == null ? null : new BigInteger(val);
> > }
> > }
> >
> > In my sqlMapConfig... <typeHandler javaType="java.math.BigInteger"
> > callback="gov.sec.acts.util.BigIntegerTypeHandlerCallback"/>
> >
> > Perhaps my callback isn't working correctly, or I'm not specifying
> > javaType="java.math.BigInteger" in all of my resultMaps whenever I'm
> > retrieving a NUMERIC id? Any ideas?
> >
> > Joe Wolf
> > ___________________________________
> > CompSci Resources, LLC
> > www.compsciresources.com
> >
> >
> > ____________________
> > Joe Wolf - Software Engineer
> > CompSci Resources, LLC
> > 703-750-3547
>
>
>
> ____________________
> Joe Wolf - Software Engineer
> CompSci Resources, LLC
> 703-750-3547
>
>