0

これはProductServices.xml

<update id="resetPassword" parameterType="batchReport">
 { call user_account_mng.enc_reset_password(
       #{user_Id,jdbcType=VARCHAR,mode=IN},
   #{encrypted_password,jdbcType=VARCHAR,mode=IN},
   #{usr_id, dbcType=VARCHAR,mode=IN},
    #{salt,jdbcType=VARCHAR,mode=IN},
   #{ret_code,jdbcType=CHAR,mode=OUT},
   #{pgp_encrypted_password,jdbcType=BLOB,mode=IN}
)}

BatchReportはPOJOです:(私はそれのエイリアスをbatchReportとして宣言しました)

 public class BatchReport 
 {
private String user_Id;
private String encrypted_password;
private String usr_id;
private String salt;
private String ret_code;
private byte[] pgp_encrypted_password;
public String getUser_Id() {
    return user_Id;
}
public void setUser_Id(String user_Id) {
    this.user_Id = user_Id;
}
public String getEncrypted_password() {
    return encrypted_password;
}
public void setEncrypted_password(String encrypted_password) {
    this.encrypted_password = encrypted_password;
}
public String getUsr_id() {
    return usr_id;
}
public void setUsr_id(String usr_id) {
    this.usr_id = usr_id;
}
public String getSalt() {
    return salt;
}
public void setSalt(String salt) {
    this.salt = salt;
}
public String getRet_code() {
    return ret_code;
}
public void setRet_code(String ret_code) {
    this.ret_code = ret_code;
}
public byte[] getPgp_encrypted_password() {
    return pgp_encrypted_password;
}
public void setPgp_encrypted_password(byte[] pgp_encrypted_password) {
    this.pgp_encrypted_password = pgp_encrypted_password;
}

}

私のメインクラスは次のようなものです:

 <BatchReport batchReport = new BatchReport();
   byte[] byteArray =new byte[]{1,2,3};
   batchReport.setUser_Id("CHI");
   batchReport.setEncrypted_password("97D6B45"); 
   batchReport.setSalt("71L");
   batchReport.setPgp_encrypted_password(byteArray);
   String returnCode = productServiceObj.resetPassword(batchReport);

次のエラーが表示されます: null パラメータの設定中にエラーが発生しました。ほとんどの JDBC ドライバーでは、すべての null 許容パラメーターに対して JdbcType を指定する必要があります。原因: java.sql.SQLException: 列の型が無効です

エラーには com.example.services.ProductServices.resetPassword-Inline が関係している可能性があります

ProductServices はメソッド resetPassword が宣言されているクラスです。この BLOB の問題について教えてください。呼び出されたプロシージャの jdbcType は何であるべきか。この pgp_encrypted_pa​​ssword に渡す値。

4

1 に答える 1

0

さて、問題の解決策が見つかりました.xmlファイルのクエリのjdbcTypeは同じままです。つまり、BLOBです。次に、値を渡すために設定される型は byte[] です。

したがって、すべては私が隠蔽したものと同じままです。in .xml ファイルはクエリで変更された行数を示す整数を返すため、実際にはエラーが存在し、関数の戻り値の型を文字列として指定したため、オブジェクト型である必要がある問題の解決策を次に示します。

于 2013-08-14T07:49:40.853 に答える