Comment appeler une procédure stockée à partir de MyBatis Java?

J'obtiens l'erreur:

org.mybatis.printemps.MyBatisSystemException: nested exception est org. apache. ibatis. des exceptions.PersistenceException:

et

java.lang.IllegalArgumentException: Mappé États de collection ne contient pas de valeur pour .."

lorsque j'appelle une procédure stockée à partir de mybatis à l'aide de Java.

Je suis en utilisant PostgreSQL comme une base de données et un Spring MVC cadre. Pour cela, ma classe DAO de l'appel de la procédure stockée est:

Orders orders=new Orders();

Valeurs sont définies dans les ordres variable par programmation.

Integer insert= getSqlSession().insert("records",orders);**

Mon mybatis fichier ressemble à ceci:

<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>

Ma procédure stockée syntaxe est:

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;

et ma classe d'entité pour le passage de paramètres est:

 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
 }
Pouvez-vous ajouter votre mappeur de code ici et de donner le code d'erreur complet?

OriginalL'auteur Ruju | 2012-09-04