3

私はしばらくこれに頭を悩ませてきました。

Java コードで iBatis を使用して、Sybase DB にある Stored Proc を実行しています。

ストアド プロシージャはいくつかのパラメータを予期しています。それらのいくつかは次のように宣言されていますVARCHAR (6)

したがって、私の iBatis マッピングでは、これらのパラメーターに対して次のことを行いました。

<parameter property="searchUserId" jdbcType="String" javaType="java.lang.String" mode="IN"/>

ただし、これを行うと、次のエラーが発生します。

--- Check the statement (update procedure failed).  
--- Cause: java.sql.SQLException: JZ006: Caught IOException: java.io.IOException: JZ0SL: Unsupported SQL type 1111.
Caused by: java.sql.SQLException: JZ006: Caught IOException: java.io.IOException: JZ0SL: Unsupported SQL type 1111.

そこで、マッピングを次のように変更しました。

<parameter property="searchUserId" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>

上記のエラーは解消されましたが、現在、パラメーターはSP に渡されたsearchUserId値を取得しています。null私は自分のJavaコードから私が渡していないことを確信していますnull

誰かがこの問題に直面しましたか? マッピングを何に変更すればよいですか??

4

3 に答える 3

1

VARCHARをjdbcTypeとして使用するように変更した後、パラメータ要素は問題ないように見えます。マッピングファイルの残りのパラメーター要素とプロシージャ要素、およびパラメーターマップを作成してクエリを呼び出すコードを含めることができますか?

クエリに渡されるマップを作成するときのタイプミスのような単純なものである可能性があります(少なくとも、それは私が犯すような間違いです。Ibatisの使用中に「userId」を大文字にすることに一貫性がないことはわかっています)。

于 2009-12-23T20:54:02.633 に答える
0

私も同様の状況に直面しました。たくさん検索した後、最終的に私の問題に対する答えは、マップの作成中に特定の「キー」が見つからないことであることがわかりました。ステートメントがありませんでした:

map.put("job_name", job.getJobName());

& CronMapper.xml で JOB_NAME=#{job_name} を使用していました

また、JOB_NAME=#{jobName} を使用していた場所もあります

于 2015-12-11T10:14:00.793 に答える