[解決済み] Jdbctemplate の文字列に対するクエリです。EmptyResultDataAccessException: 不正な結果サイズ:期待値1、実際0
2022-03-04 01:43:36
質問
Jdbctemplateを使って、DBから1つのString値を取得しています。 以下は私のメソッドです。
public String test() {
String cert=null;
String sql = "select ID_NMB_SRZ from codb_owner.TR_LTM_SLS_RTN
where id_str_rt = '999' and ID_NMB_SRZ = '60230009999999'";
cert = (String) jdbc.queryForObject(sql, String.class);
return cert;
}
私のシナリオでは、クエリにヒットしないこともあり得ますので、以下のエラーメッセージを回避する方法を質問します。
EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
例外を投げるのではなく、nullを返せばいいように思えますが。 どのように修正すればよいのでしょうか? 事前にありがとうございます。
解決方法は?
JdbcTemplateで,
queryForInt
,
queryForLong
,
queryForObject
これらのメソッドは、実行されたクエリが1つの行を返すことを想定しています。もし行がない、あるいは複数の行を得た場合、結果として
IncorrectResultSizeDataAccessException
. さて、正しい方法は、この例外をキャッチしないか、または
EmptyResultDataAccessException
しかし、使用しているクエリが1行しか返さないことを確認してください。 もしそれが不可能であれば
query
メソッドで代用できます。
List<String> strLst = getJdbcTemplate().query(sql, new RowMapper<String>() {
public String mapRow(ResultSet rs, int rowNum) throws SQLException {
return rs.getString(1);
}
});
if (strLst.isEmpty()) {
return null;
} else if (strLst.size() == 1) { // list contains exactly 1 element
return strLst.get(0);
} else { // list contains more than 1 element
// either return 1st element or throw an exception
}
関連
-
[解決済み] Javaで拡張子なしのファイル名を取得する方法は?
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] Jdbctemplate の文字列に対するクエリです。EmptyResultDataAccessException: 不正な結果サイズ:期待値1、実際0
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] このフォーマット(Tue Jul 13 00:00:00 CEST 2010)の日付をJavaの日付に変換する方法(文字列はalfrescoのプロパティに由来しています)
-
[解決済み] javaで部分クラスを実装する方法
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Firebase クラスにシリアライズするプロパティが見つからない
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] このフォーマット(Tue Jul 13 00:00:00 CEST 2010)の日付をJavaの日付に変換する方法(文字列はalfrescoのプロパティに由来しています)
-
[解決済み] Cloneable throws CloneNotSupportedException
-
[解決済み] android.support.v4.app.FragmentActivity' で 'TAG' がプライベートアクセスされている。
-
[解決済み] Java の条件付きコンパイル:コードチャンクをコンパイルしないようにするには?
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] JDBC タイプの方言マッピングがありません。1111
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] IntegerからBigIntegerへの変換