当前位置: 代码迷 >> J2EE >> 使用mybatis推迟加载时,因为接口返回的是代理对象,导致dubbo序列化后属性值全部为null
  详细解决方案

使用mybatis推迟加载时,因为接口返回的是代理对象,导致dubbo序列化后属性值全部为null

热度:100   发布时间:2016-04-17 23:05:22.0
使用mybatis延迟加载时,因为接口返回的是代理对象,导致dubbo序列化后属性值全部为null
最近想在原先的系统上使用dubbo。
系统使用的是mybatis,开启了延迟加载:

<setting name="lazyLoadingEnabled" value="true" />
<setting name="aggressiveLazyLoading" value="false" /> 

调试发现接口返回的是代理对象,所以controller(springMVC)得到的数据属性都是null。
如果关掉延迟加载,得到的数据有值了,但系统部分原有的功能受到了影响,会加载一些原先需要延迟加载的数据,且如下的树对象陷入不停循环,导致内存溢出

<resultMap type="BaseTreePojo" id="baseTreePojo" extends="com.lmiky.platform.sort.pojo.BaseSortPojo.baseSortPojo">
<result column="name" property="name"/>
<result column="leaf" property="leaf"/>
<association property="parent" column="parentId" select="com.lmiky.platform.tree.pojo.BaseTreePojo.findById"/>
<collection property="children" column="id" select="com.lmiky.platform.tree.pojo.BaseTreePojo.listByParent"/>
</resultMap>

有什么尽量不修改原有系统代码的解决方法吗,dubbo是不是无法序列化代理对象,希望能帮忙回答下,谢谢。
------解决思路----------------------
dubbo默认序列化:hessian
------解决思路----------------------
一直都在用dubbo和mybatis,dubbo序列化一样可以把延迟的对象加载出来的.
  相关解决方案