使用String.format的IntelliJ注入语言

时间:2016-07-08 01:39:51

标签: intellij-idea

我有一个SQL查询,遗憾的是它不能写成预准备语句,因为它有可变的列名。因此,我必须使用String格式化来构建我的SQL。我使用的语言是PostgreSQL,但由于我的查询中有String.format,IntelliJ会在我的代码中抱怨语法错误。

public class Example {
    public String getUniqueFeatureCountSqlQuery(String feature, Long sourceUserId) {
        //language=PostgreSQL
        return String.format("SELECT COUNT(DISTINCT targetUserId), %s FROM userComments GROUP BY %s WHERE userId = %d",
            feature, feature, sourceUserId);
    }
}

enter image description here

如何让IntelliJ正确识别此字符串?它应该知道它是PostgreSQL,它首先由String.format格式化。

1 个答案:

答案 0 :(得分:2)

感谢@WillHumphreys我通过youtrack找到了解决方案。

您必须转到工具下的用户参数设置 - >数据库 - >用户参数,或使用查找操作命令。

enter image description here

然后进行这些更改。

enter image description here

在尝试alt-enter在控制台中运行查询时,您可能还必须使用参数索引字符串格式表示法(String.format("SELECT %1s ...", ...))来区分参数。