我正在尝试为IN()
java 中的 MsSQL 中的一个子句准备一个 ID 列表。我有下面的代码,它看起来应该可以工作,但它抛出了错误:java.sql.SQLException:将 nvarchar 值“1,2”转换为数据类型 int 时转换失败。
当我传递一个字符串时,为什么它像一个整数一样尝试它,我完全不知所措。任何见解都会很棒。
我也试过换成template.getId()
没有template.getId().toString()
运气
//JOINs
Collection<Template> templates = search.getTemplateCollection();
if (templates != null && templates.size() > 0) {
searchQuery.append("INNER JOIN dbo.content_to_template ON content_to_template.template_id IN (:templateIds) AND content_to_template.content_id = content.id ");
StringBuilder templateIds = new StringBuilder();
for (Template template : templates) {
if (templateIds.length() == 0) {
templateIds.append(template.getId());
} else {
templateIds.append(",").append(template.getId());
}
}
queryMap.put("templateIds", templateIds.toString());
}
return this.namedjdbcTemplate.query(searchQuery.toString(), new MapSqlParameterSource(queryMap), this.contentRowMapper);