Java(JDK6)アプリケーションは、Oracle、SQL Server、DB2などの異なるデータベースをサポートする必要があります。データベースアクセスにはSpring 3.0とJDBCTemplateを使用します。私たちのクライアントの1人は大文字と小文字を区別し、大文字と小文字のテーブル名を自動的に使用するSQL Server 2005を使用しますSpringのJdbcTemplateを使用して、データベースtablename大文字と小文字の区別を無視する方法?
"select * from mytablename m"のようなクエリは、明らかに、クライアントがテーブルMYTABLENAMEを持つため、動作しません。 - 私は私のクライアントのデータベースオプションを変更することはできませんので、 - その最も
this.jdbcTemplate.queryForOject("select * from mytablename m");
`Exception in thread "main" org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [select * from mytablename m]; nested exception is java.sql.SQLException: Invalid object name 'mytablename'.`
私はコードを適応することでこだわっている:以下のコードの場合
は、例えば、私は素敵な例外を取得します明らかな解決策は、クエリのすべてのテーブル名を大文字にすることです。私はこのクライアントでうまくいくことは知っていますが、新しいクライアントに大文字と小文字の区別と小文字のテーブル名を持つデータベースがあればどうでしょうか?これまでのところ、より広い解決策を見つけることに成功しませんでした。私が見つけたほとんどの答えは、データベースの大文字と小文字の区別を変更したり、クエリを書き直す必要がありました。私は使用しようとしました:this.jdbcTemplate.setResultsMapCaseInsensitive(true);
しかし、私がよく理解している場合は、クエリの結果にのみ適用され、クエリ自体には適用されません。
SpringのJdbcTemplateを使用して大文字小文字を区別しないクエリを実行する方法はありますか?
合意しました。これはおそらく最良の解決策です。 – Tarek