2017-05-21 12 views
0

@Spring:私は別のIDでIDを見つけるDaoを書いた。データがうまく取得されても見つからない場合は、このような例外が表示されます。ここでどのようにEmptyResultDataAccessExceptionを解決するには?

org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0 

はDAOです:

public Integer getIdByMerchantId(Integer merchantId) { 
     String query = "SELECT id FROM transaction_history WHERE merchant_id=? "; 
     try { 
      return serviceJdbcTemplate.queryForObject(query, new Object[]{merchantId}, Integer.class); 

     } catch (EmptyResultDataAccessException e) { 
      log.error("Following query execution failed: "); 
      log.error(Utils.getLoggerFriendlyQuery(query), merchantId); 
      log.error("{} failed for merchant id {}. Error: {}", query, merchantId, e.getLocalizedMessage()); 
      return null; 
     } 
    } 
+0

あなたは、このメソッドの呼び出しを共有し、ダオ –

+1

plsは、このチェックすることができます。あなたの助けをhttps://www.mkyong.com/spring/queryforobject-throws-emptyresultdataaccessexception-when-record-not-found/ –

答えて

2

私はあなたのコードに問題が表示されません。 JdbcTemplateに単一の行を検索するよう依頼していますが、照会しているmerchantIdはおそらくデータベースに存在しません。 queryForObject()では、返される行は1つだけです。ベストプラクティスはクエリに「LIMIT 1」を追加することで、複数の行が返されることはありません。

これをお読みください。documentation reference結果セットに0行以上の行が含まれている場合に、IncorrectResultSizeDataAccessExceptionがスローされます。

また、こちらはpostとお読みください。

+0

感謝を....今私はそれを得た。 ロガーにエラーが表示されたときに問題があると思っていました。 –

関連する問題