我试图弄清楚如何将 JOOQ 与 NamedParameterJdbcTemplate 一起使用。我已经成功创建了其他查询,但我一直坚持创建包含 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);
}