3
私は、PostgresでSpring JbdcTemplateを使用しています。 Postrgres JDBC内部プリペアドステートメントの実装の問題の原因で立ち往生ポストグルのいくつかの近くのプレースホルダが文を準備しました
私のクエリ文字列は次のとおりです。
private static final String SELECT_ALL_PARTIALLY =
"SELECT login, added FROM admin ORDER BY ? ? OFFSET ? LIMIT ?";
そして、私は好きで、それを使用したい:
List matches = getJdbcTemplate().query(SELECT_ALL_PARTIALLY,
(new Object[]{
column, // "login" or "added"
order, // "asc" or "desc"
offset,
limit
}),
new RowMapper() {
...
問題をは、...ORDER BY ? ? OFFSET...
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$2"
Position: 61
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:648) ...
です
この2つのプレースホルダなどはどうやって分けることができますか?
ああ。本気ですか?それはかなり悪いです。複数の列で注文する必要がある場合、asc/descパラメータの組み合わせごとにクエリを行う必要がありますか?これにはいくつかの回避策がありますか? – user976426
@ user976426:列名はパラメータとして指定できますが、方向は指定できません。 – axtavt