0

重複の可能性:
Spring JdbcTemplate を使用して動的な「in (…)」SQL リストを生成する方法は?

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);
4

1 に答える 1

2

テンプレート ID のコレクションを準備して、マップに渡す必要があります。コレクションを想定しているため、文字列で区切られたデータは機能しない場合があります。

=======================

List templateIds = new ArrayList(); 
templateIds.add(template.getId()); 

----
---

 queryMap.put("templateIds", templateIds); 
于 2012-04-13T13:25:32.267 に答える