我正在将大的MyBatis2映射转换为MyBatis3映射,并且遇到了一些问题,我有一个resultMap
多个result
元素使用相同的property
属性(并且该类是从我的控制之外的WSDL生成的):Mybatis2到MyBatis3的转换 - 结果具有相同的属性
<resultMap id="blah" class="someWsdlGeneratedClass">
<result property="addressLine"
resultMap="addressLineOneListMap"
javaType="java.util.List" />
<result property="addressLine"
resultMap="addressLineTwoListMap"
javaType="java.util.List" />
</resultMap>
<resultMap id="addressLineXListMap" class="string">
<!-- Result maps are the same except for column -->
<result property="addressLine" column="COLUMN_X" />
</resultMap>
注意这两个属性都是“addressLine”。
这适用于Mybatis2。但是,如果我尝试使用MyBatis3同样的模式,我得到一个IllegalArgumentException
:Result Maps collection already contains value for Mapper.mapper_resultMap[blah]_collection[addressLine]
<resultMap id="blah" type="someWsdlGeneratedClass">
<collection property="addressLine"
resultMap="addressLineOneListMap"
javaType="java.util.List" />
<collection property="addressLine"
resultMap="addressLineTwoListMap"
javaType="java.util.List" />
</resultMap>
我想避免的DTO对象写入周围生成类的包装,如果可能的话,因为这将导致项目中的重大重大工作。有什么我可以添加在地图本身?
我很困惑你的用例。 resultMap.result用于映射到单个属性(例如,java类属性或hashmap属性)。这就是为什么它通过属性名称进行索引。你需要将两次映射到同一个属性的用例是什么? – h3adache
我对继承的代码的理解是,dto和/或其他后台代码处理将各种元素放入同一个数组中。 –