NamedParameterJdbcTemplate で JOOQ を使用する方法を理解しようとしています。他のクエリは正常に作成できましたが、WHERE 句を含むクエリの作成に行き詰まっています。以下のメソッドを実行しようとすると、エラーorg.springframework.dao.InvalidDataAccessApiUsageException: SQL [select "first_name" from "customer" where "id" = cast(? as integer)]: given 1 parameters but expected 0 が表示されます
equals() で整数のみを使用しようとすると、同じエラーが発生します... .where(fieldByName("id").equal(1001)、同じエラー、.where(fieldByName("id").equal (id)、同じエラー。
WHERE 句を削除すると、クエリ自体は正常に動作するようです。
ここで何が間違っていますか?SQL構文は正しいようです。おそらく私は愚かですが、ここで何が問題なのか本当にわかりません。助けてください!
public String getCustomerFirstName(int id) {
Query query = create.select(fieldByName("first_name"))
.from(tableByName("customer"))
.where(fieldByName("id").equal(param("id", id)));
Param param = query.getParam("id");
SqlParameterSource namedParameters = new MapSqlParameterSource(param.getName(), id);
return this.getNamedParameterJdbcTemplate().queryForObject(query.getSQL(), namedParameters, String.class);
}