エラーが発生しました:
org.mybatis.spring.MyBatisSystemException:ネストされた例外はorgです。アパッチ。ibatis。exceptions.PersistenceException:
と
java.lang.IllegalArgumentException:マップされたステートメントコレクションに..の値が含まれていません。 "
Javaを使用してmybatisからストアドプロシージャを呼び出すとき。
私はPostgreSQLをデータベースおよびSpringMVCフレームワークとして使用しています。このため、ストアドプロシージャを呼び出すDAOクラスは次のとおりです。
Orders orders=new Orders();
値は、プログラムで変数の順序で設定されます。
Integer insert= getSqlSession().insert("records",orders);**
私のmybatisファイルは次のようになります:
<insert id="records" parameterType="Orders" statementType="CALLABLE">
{call fn_records_tbl(#{rId,javaType=Integer,jdbcType=INTEGER,mode=IN},#{state,javaType=String,jdbcType=CHAR,mode=IN},#{uId,javaType=Integer,jdbcType=INTEGER,mode=IN},#{status,javaType=String,jdbcType=CHAR,mode=IN})}
</insert>
私のストアドプロシージャの構文は次のとおりです。
CREATE OR REPLACE FUNCTION fn_records_tbl(rId integer, state character,uId integer, status character)
RETURNS void AS
$BODY$
DECLARE
-- my code
BEGIN
-- my code
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION fn_records_tbl(integer, character, integer, character)
OWNER TO mydba;
パラメータを渡すためのエンティティクラスは次のとおりです。
public class Orders implements Serializable {
private static final long serialVersionUID = 267216928694677437L;
private Integer uId;
private Integer rId;
private String status;
private String state;
// here are my setter and getter
}