【问题标题】:Mybatis resultmap to map values to hash map field of a modelMybatis resultmap将值映射到模型的hash map字段
【发布时间】:2012-11-25 04:41:08
【问题描述】:

我正在尝试映射创建将填充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 进行映射。但它似乎不起作用。我gettign这个错误

"元素类型"resultMap"的内容必须匹配 "(构造函数?,id*,result*,association*,collection*,discriminator?)"。

<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也可以认为是关联映射。但这只是一对一的映射。我还尝试使用&lt;collection&gt; 标记进行映射。我仍然得到同样的错误。

【问题讨论】:

    标签: java mybatis


    【解决方案1】:

    “resultMap”下的元素顺序应按照DTD 的规定进行维护。将所有“结果”标签移动到“关联”标签之前。

    【讨论】:

      【解决方案2】:

      不幸的是,您需要实现 ResultHandler 来构建 Hashmap。

      另外,你提到的DTD错误是因为结果元素必须在关联元素之前。

      【讨论】:

      • @devdanke - 我不同意。虽然引用的错误消息确实是 DTD 验证错误,但问题的要点是“我想将几列映射到 vehicleDocuments HashMap。”,这需要使用 ResultHandler 来完成,至少在 2012 年是这样。跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 2022-08-03
      相关资源
      最近更新 更多