10

springframework.dao.EmptyResultDataAccessExceptionSQLサーバーデータベースからデータを選択しようとしているときに、私が書いたコードは次のとおりです。クエリ インターフェイスを使用してデータベースからデータを選択する方法を提案できる人はいますか?

public int getRedempRequestId(RedemptionResponseBean redemptionResponse)
        throws ParseException {
    final Timestamp redempIdFromCsv = getRedeemDate(redemptionResponse);
    int participantId = redemptionResponse.getOcpEventMemberId();
    System.out.println(redempIdFromCsv);
    System.out.println(participantId);

    int res = jdbcTemplate.queryForInt("SELECT RR.REDEMPTION_REQUEST_ID "
            + "FROM  dbo.REDEMPTION_REQUEST RR WITH (NOLOCK)"
            + "WHERE RR.SENT_DATE = ? AND "
            + "RR.OEDEF_OCP_EVENT_MEMBER_ID = ? ", new Object[] {
            redempIdFromCsv, participantId });
    System.out.println(res+"-----------");
    return res;
}

ここで何が問題なのか誰か教えてもらえますか?

4

1 に答える 1

11

データが返されないと予想される場合は、 を使用しないでください。jdbcTemplate.queryForInt(...)そのメソッドは、実行するクエリが整数値を返すことを期待しているためです。基本的に、それがEmptyResultDataAccessExceptionあなたに言っていることです。その Javadoc は次のように述べています。

結果に少なくとも 1 つの行 (または要素) があると予想されていたが、実際には 0 行 (または要素) が返された場合にスローされるデータ アクセス例外。

代わりに、 のいずれかのquery(...)メソッドを使用する必要がありJdbcTemplateます。これにより、0 行を返すことができます。

于 2013-07-22T13:39:17.070 に答える