iBatis报错

异常如下:
org.xml.sax.SAXParseException: The content of element type "resultMap" must match "(result*,discriminator?)".

源码如下:
[code="xml"]

<typeAlias alias="User" type="jp.co.grids.mda.entity.user.User"/>
<typeAlias alias="Department" type="jp.co.grids.mda.entity.user.Department"/>

<resultMap id="DepartmentResult" class="Department">
    <result property="id" column="ID" />
    <result property="depName" column="DEP_NAME" />
    <result property="users" column="ID" select="getUsers" />   
</resultMap>


<select id="getUsers" resultClass="User">   
    select * from users where id=#value#   
</select> 


<select id="Department.select" parameterClass="java.lang.Long" resultMap="DepartmentResult">
    select id, dep_name
    from department 
</select>


[/code]

框架是Spring2.5 + struts2 + ibatis2.3。 百思不得其解,语法应该没有错啊。
[b]问题补充:[/b]
yourgame 你贴的代码里并没有resultMap使用。

我贴一个给你参考 源代码工程可以下载
地址 [url]http://yourgame.iteye.com/blog/252853 [/url]

[code="xml"]
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap

PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"

"http://ibatis.apache.org/dtd/sql-map-2.dtd">

<typeAlias alias="subject" type="com.lhq.prj.bms.po.Subject" />
<typeAlias alias="category" type="com.lhq.prj.bms.po.Category" />
<typeAlias alias="page" type="com.lhq.prj.bms.core.Page" />

<parameterMap class="category" id="pm_category_without_id">
    <parameter property="categoryName" javaType="string" jdbcType="VARCHAR" />
    <parameter property="subjectId" javaType="integer" jdbcType="NUMBER" />
    <parameter property="subjectName" javaType="string" jdbcType="VARCHAR" />
    <parameter property="remark" javaType="string" jdbcType="VARCHAR" />
</parameterMap>
<sql id="byCategoryIdCondition">
    <![CDATA[
       categoryId = #categoryId:NUMBER#
    ]]>
</sql>

<insert id="save" parameterMap="pm_category_without_id">
    <![CDATA[
        INSERT INTO t_category 
                    (categoryName,subjectId,subjectName,remark) 
             VALUES (?,?,?,?)
    ]]>
    <selectKey resultClass="int">
        <![CDATA[
            SELECT @@IDENTITY AS ID
        ]]>
    </selectKey>
</insert>

<delete id="deleteById" parameterClass="integer">
    <![CDATA[
        delete t_category
    ]]>
    <dynamic prepend="WHERE">
        <include refid="byCategoryIdCondition" />
    </dynamic>
</delete>

<select id="findAll" resultClass="category">
    <![CDATA[
        SELECT * FROM t_category
    ]]>
</select>

<update id="update" parameterClass="category">
    <![CDATA[
        UPDATE t_category
    ]]>
    <dynamic prepend="SET">
        <isNotNull property="categoryName" prepend=",">
            <![CDATA[
                categoryName = #categoryName:VARCHAR#
            ]]>
        </isNotNull>
        <isNotNull property="subjectId" prepend=",">
            <![CDATA[
                subjectId = #subjectId:NUMBER#
            ]]>
        </isNotNull>
        <isNotNull property="subjectName" prepend=",">
            <![CDATA[
                subjectName = #subjectName:VARCHAR#
            ]]>
        </isNotNull>
        <isNotNull property="remark" prepend=",">
            <![CDATA[
                remark = #remark:VARCHAR#
            ]]>
        </isNotNull>
    </dynamic>
    <dynamic prepend="WHERE">
        <include refid="byCategoryIdCondition" />
    </dynamic>
</update>

<sql id="findCategoryByPageCondition">
    <isNotEmpty property="conditions">
        <iterate property="conditions" open="(" close=")" conjunction="OR">
            <![CDATA[
                upper(categoryName) LIKE '%' + upper(#conditions[]:VARCHAR#) + '%'
                OR upper(subjectName) LIKE '%' + upper(#conditions[]:VARCHAR#) + '%'
                OR upper(remark) LIKE '%' + upper(#conditions[]:VARCHAR#) + '%' 
            ]]>
        </iterate>
    </isNotEmpty>
</sql>

<select id="findByPage" parameterClass="page" resultClass="category">
    <![CDATA[
        SELECT TOP $limit$ * FROM t_category 
                WHERE (categoryId >= (SELECT MAX(categoryId) FROM (SELECT TOP $start$ categoryId FROM t_category 
    ]]>
    <dynamic prepend="WHERE">
        <include refid="findCategoryByPageCondition" />
    </dynamic>
    <![CDATA[
        ORDER BY categoryId ) AS T)) 
    ]]>
    <dynamic prepend="AND">
        <include refid="findCategoryByPageCondition" />
    </dynamic>
    <![CDATA[
        ORDER BY categoryId
    ]]>
</select>

<select id="findByCount" parameterClass="page" resultClass="int">
    <![CDATA[
        SELECT COUNT(*) FROM t_category 
    ]]>
    <dynamic prepend="WHERE">
        <include refid="findCategoryByPageCondition" />
    </dynamic>
</select>

<select id="findCategoryBySubject" parameterClass="subject" resultClass="category">
    <![CDATA[
        SELECT * FROM t_category 
    ]]>
    <dynamic prepend="WHERE">
        <isNotNull property="subjectId" prepend="OR">
            <![CDATA[
                subjectId = #subjectId:NUMBER#
            ]]>
        </isNotNull>
        <isNotNull property="subjectName" prepend="OR">
            <![CDATA[
                subjectName like '%' +  #subjectName:VARCHAR# + '%'
            ]]>
        </isNotNull>
    </dynamic>
</select>

[/code]