I keep getting this exception
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT id, name FROM pts WHERE id IN ()]; nested exception is java.sql.SQLException: Incorrect syntax near ')'.
Here is the function where my SQL is being executed
public List<ParentPt> getParentPtsFromWorkPackage(String workPackage) {
Set<Integer> ptNums = getParentPtNums(workPackage);
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("ptNums", ptNums);
String sql = "SELECT id, name FROM pts WHERE id IN (:ptNums)";
NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(this.dataSource);
List<ParentPt> pts = namedJdbcTemplate.query(sql, params, new ParentPtMapper());
return pts;
}
And my helper function that's being called:
public Set<Integer> getParentPtNums(String workPackage) {
String sql = "SELECT DISTINCT predecessor FROM pts WHERE RTRIM(LTRIM(work_package_name)) = ? AND predecessor IS NOT NULL";
List<Integer> ptNums = jdbcTemplateObject.queryForList(
sql, new Object[] {workPackage}, Integer.class);
Set<Integer> ptNumSet = new HashSet<Integer>(ptNums);
return ptNumSet;
}
I've already looked at How to execute IN() SQL queries with Spring's JDBCTemplate effectivly? and I'm following the same conventions they use to make the query, so I can't really tell what's going wrong.