I'm using a serialized cache with result maps that contain a discriminator. This fails with NotSerializableException unless I set lazyLoadingEnabled="false". Is this expected?

What effect does setting lazyLoadingEnabled=false have?

Error msg is:
com.ibatis.common.exception.NestedRuntimeException: Error caching serializable object. Cause: java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader Caused by: java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader

SQLMap:
<sqlMap namespace="Dimension">

<cacheModel id="dimensionGroupCache" type="LRU" readOnly="false" serialize="true">
      <flushInterval hours="10"/>
      <property name="size" value="1000"/>
      <flushOnExecute statement="deleteGroup"/>
      <flushOnExecute statement="updateDimensionGroup"/>
  </cacheModel>

<resultMap id="dimensionGroupAbstractResult" class="com.manu.tro.service.dimension.model.DimensionGroupAbstract">
      <result property="id" column="DIM_GROUP_ID"/>
      <result property="name" column="NAME"/>
      <result property="dimensionId" column="DIMENSION_ID"/>
      <discriminator column="TYPE" javaType="string">
          <subMap value="Group" resultMap="dimensionGroupResult"/>
          <subMap value="Range" resultMap="dimensionGroupRangeResult"/>
      </discriminator>
  </resultMap>

<resultMap id="dimensionGroupResult" class="com.manu.tro.service.dimension.model.DimensionGroup" extends="dimensionGroupAbstractResult"> <result property="dimensionGroupValues" column="DIM_GROUP_ID" select="getDimensionGroupValues"/>
  </resultMap>

<resultMap id="dimensionGroupRangeResult" class="com.manu.tro.service.dimension.model.DimensionGroupRange" extends="dimensionGroupAbstractResult">
      <result property="from" column="FROM_VALUE"/>
      <result property="to" column="TO_VALUE"/>
  </resultMap>

<select id="getDimensionGroup" resultMap="dimensionGroupAbstractResult" cacheModel="dimensionGroupCache">
  sql..................


Reply via email to