2016-08-31 15 views
0

バイト配列をSqlLobValue()として与えようとしましたが、動作しません。jdbcTemplateを使用してOracleにファイルを挿入する方法は?

public void sendEmailWithAccountInfoPDF(String toEmail, byte[] pdf) { 
     String SQL_ADD_EMAIL = "insert into emails_for_sending " + 
     "(to_email, attach_type, attach_name, attach_body) " + 
     "values (:to_email, :attach_type, :attach_name, :attach_body);"; 

    Map<String, Object> params = new HashMap<>(); 
    params.put("to_email", toEmail); 

    params.put("attach_type", "application/pdf"); 
    params.put("attach_name", "info.pdf"); 
    params.put("attach_body", new SqlLobValue(pdf)); 

    jdbcTemplate.update(SQL_ADD_EMAIL, params); 
} 

しかし、それは私に "SqlLobValueはSQL型BlobとClobのみをサポートしています"と述べています。

jdbcTemplateを使用してOracleにファイルを挿入する方法はありますか。

+0

ポストフルスタックトレース。 Springクラスによって例外がスローされますか?はいの場合は、ソースコードを検索して例外がスローされる理由を確認します。そうでなければ、attach_body列は実際にはBLOB/CLOB型ですか? –

答えて

0

LobCreator/LobHandlerはLOBのために、次のサポートを提供する入口および出力:

BLOB

バイト[] - getBlobAsBytesとsetBlobAsBytes

入力ストリーム - getBlobAsBinaryStreamとsetBlobAsBinaryStream

CLOB

文字列 - getClobAsStringおよびsetClobAsString

のInputStream - getClobAsAsciiStreamとsetClobAsAsciiStream

リーダー - getClobAsCharacterStreamとsetClobAsCharacterStream

関連する問題