2

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" の内容は、"(constructor?,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 にマッピングしようとすることも、関連付けマッピングと見なすことができます。ただし、これは 1 対 1 のマッピングのみです。<collection>マッピング用のタグも使用してみました。それでも同じエラーが発生します。

4

2 に答える 2

16

「resultMap」の下の要素の順序は、 DTDの指示に従って維持する必要があります。すべての「result」タグを「association」タグの前に移動します。

于 2012-12-06T16:46:57.517 に答える
1

残念ながら、ハッシュマップを作成するにはResultHandlerを実装する必要があります。

また、言及したDTDエラーは、結果要素が関連付け要素の前にある必要があるためです。

于 2012-11-27T03:57:00.520 に答える