Ich habe eine SQL-Abfrage, die leider nicht als vorbereitete Anweisung geschrieben werden kann, da sie variable Spaltennamen hat. Aus diesem Grund muss ich mein SQL mit String-Formatierung erstellen. Die Sprache, die ich benutze, ist PostgreSQL, aber weil ich String.format in meinen Abfragen habe, beschwert sich IntelliJ über Syntaxfehler in meinem Code.IntelliJ Inject-Sprache mit String.format
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);
}
}
Wie mache ich IntelliJ diese Zeichenfolge richtig erkennen? Es sollte wissen, dass es PostgreSQL ist, das zuerst von String.format formatiert wird.
Was meinen Sie mit variablen Spaltennamen? Die Namen sehen für mich fest codiert aus. Wäre das nicht anfällig für SQL-Injektionen? –
@TimBiegeleisen Mein Fehler. Ich habe meine Frage bearbeitet, so dass sie jetzt klarer sein sollte. Angenommen, "Feature" wurde bereits bereinigt. – michaelsnowden
Es scheint mit diesem behobenen Fehler zu tun zu haben, aber ich konnte es nicht zum Laufen bringen. https://youtrack.jetbrains.com/issue/IDEA-139305 –