Java 从MyBatis中的过程返回null

Java 从MyBatis中的过程返回null,java,sql,spring,stored-procedures,mybatis,Java,Sql,Spring,Stored Procedures,Mybatis,我无法从程序中获取值。它对表进行插入,并且必须返回代码。数据插入正确,但返回的代码始终为空 <parameterMap id="callParameters" type="Call" > <parameter property="client" jdbcType="VARCHAR" mode="IN"/> <parameter property="originalAnalyst" jdbcType="VARCHAR" mode="IN"/>

我无法从程序中获取值。它对表进行插入,并且必须返回代码。数据插入正确,但返回的代码始终为空

<parameterMap id="callParameters" type="Call" >
   <parameter property="client" jdbcType="VARCHAR"  mode="IN"/>
   <parameter property="originalAnalyst" jdbcType="VARCHAR"  mode="IN"/>
   <parameter property="currentAnalyst" jdbcType="VARCHAR"  mode="IN"/>
   <parameter property="analystType" jdbcType="INTEGER" mode="IN"/>
   <parameter property="category" jdbcType="VARCHAR"  mode="IN"/>
   <parameter property="product" jdbcType="VARCHAR"  mode="IN"/>
   <parameter property="process" jdbcType="VARCHAR"  mode="IN"/>
   <parameter property="problem" jdbcType="VARCHAR"  mode="IN"/>
   <parameter property="priority" jdbcType="VARCHAR"  mode="IN"/>
   <parameter property="status" jdbcType="VARCHAR"  mode="IN"/>
   <parameter property="serviceType" jdbcType="VARCHAR"  mode="IN"/>
   <parameter property="abstract" jdbcType="VARCHAR"  mode="IN" />
   <parameter property="descript" jdbcType="VARCHAR"  mode="IN"/>
   <parameter property="nullField" jdbcType="VARCHAR"  mode="IN"/>
   <parameter property="returnField" jdbcType="VARCHAR"  mode="OUT"/>
   <parameter property="callNumber" jdbcType="VARCHAR"  mode="OUT" />
   <parameter property="currentDate" jdbcType="TIMESTAMP" mode="IN"  />
   <parameter property="constant1" jdbcType="INTEGER" mode="IN"/>
   <parameter property="constant0" jdbcType="INTEGER" mode="IN"/>
</parameterMap>
<select id="open-call"  parameterMap="callParameters" resultType="Call"  statementType="CALLABLE">
   {call ADMAHD30.spr_AutoReq(#{returnField},#{constant1},#{callNumber},#{currentDate},#{client},#{originalAnalyst},#{currentAnalyst},#{analystType},#{category},#{product},#{process},#{problem},#{nullField},#{priority},#{status},#{serviceType},#{abstract},#{descript},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{constant0})}
 </select>

[调用ADMAHD30.spr的自动回复(35周五{{返回领域{{返回领域},,35周五{康斯坦T1},,35周五{调用电话号码},{调用ADMAHADADADADADAD3.0.调用ADMAHD30.3.3.3.spr的自动回复(#{{{返回领域{{{{返回领域.返回领域}},,,,,,,{355{{康斯坦T5}}{1}},{1},{1}},,,{1},,,{3}州州州州州州州州州州州州各州各州各州各州各州各州各州各州各州各州各州各州各州},,,,,,{1},,{{州州州州州州州州州州州州州州......................}、#{serviceType}、#{abstract}、#{descript}、#{nullField}、#{nullField}、#{nullField}、#{nullField}、#{nullField}、#{nullField}、##{nullField}、{nullField}、{nullField}、{nullField}、{nullField}、{nullField}、{constant0}

所有这些属性都正确地映射到我的对象中。有什么问题吗?

我对myBatis有些生疏,但是如果您希望返回字符串,为什么结果类型不是“java.lang.String”

编辑:使用resultMap而不是resultType如何(假设sp为返回参数指定了名称):



然后将结果参数包含在parameterMap中。

您使用的数据库是什么?Oracle。我无法更改任何过程或表。它们来自另一个应用程序。
returnField
不会作为任何参数传递给过程。我猜
nullFields
中的一个可能应该是
returnField
相反?是的,没错。第一个参数应该是returnField,但它仍然没有返回调用号。您尝试使用resultMap吗?当我从MyBatis调用过程时,我总是使用resultMap进行数据绑定,因为过程上有两个参数。其中一个是我需要的代码。
<resultMap id="CallResultMap" type="com...Call">
        <result property="callNumber" column="callNumberCol"/>
        <result property="returnField" column="returnFieldCol"/>
</resultMap>