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

J2EE 码拜 8年前 (2016-05-17) 1648次浏览
最近想在原先的系统上使用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是不是无法序列化代理对象,希望能帮忙回答下,谢谢。

解决方案

30

70

一直都在用dubbomybatis,dubbo序列化一样可以把延迟的对象加载出来的.

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明使用mybatis延迟加载时,原因是接口返回的是代理对象,导致dubbo序列化后属性值全部为null
喜欢 (0)
[1034331897@qq.com]
分享 (0)