我正在尝试映射创建将填充vehicleVO的结果映射。我想将几列映射到vehicleDocuments HashMap。我正在填充的数据也存在于同一个表中。
public class VehicleVO implements Serializable {
public String vehicleId;
public String vehicleNumber;
public String model;
public Map<String, Date> vehicleDocuments;
public TransportVO transport;
public String distanceTraveled;
}
我正在尝试使用以下xml进行映射。但它似乎没有用。我得到了这个错误
“元素类型”resultMap“的内容必须匹配 “(构造?,ID *,结果*,关联*,收集*,鉴别器?)”。
<resultMap id="BaseResultMap" type="com.svms.service.vo.VehicleVO">
<id column="vehicle_id" jdbcType="BIGINT" property="vehicleId" />
<result column="vehicle_no" jdbcType="VARCHAR" property="vehicleNumber" />
<result column="Model" jdbcType="VARCHAR" property="model" />
<association property="vehicleDocuments" javaType="java.util.HashMap">
<result column="FC" jdbcType="DATE" property="FC_TD" />
<result column="TAX" jdbcType="DATE" property="TAX_TD" />
<result column="Insureance" jdbcType="DATE" property="INSURANCE_TD" />
<result column="Form47" jdbcType="DATE" property="FORM47_TD" />
<result column="NC" jdbcType="DATE" property="NC_TD" />
</association>
<result column="total_distance" jdbcType="INTEGER" property="distanceTraveled" />
<result column="transport_id" jdbcType="BIGINT" property="transportId" />
</resultMap>
如果我的理解是正确的,那么尝试映射到hashMap也可以被视为关联映射。但这只是一对一的映射。我还尝试使用<collection>
标记进行映射。我仍然得到同样的错误。
答案 0 :(得分:16)
“resultMap”下的元素顺序应按照DTD的规定进行维护。将所有“结果”标记移动到“关联”标记之前。
答案 1 :(得分:1)
不幸的是,您需要实现ResultHandler来构建Hashmap。
另外,你提到的DTD错误是因为结果元素必须在关联元素之前。