ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Larry Meadors <lmead...@apache.org>
Subject Re: iBATIS objects getting into POJOs
Date Fri, 27 Jan 2006 18:27:20 GMT
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 <joe.wolf@compsciresources.com> 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
>
>

Mime
View raw message