Java (JDK6) アプリケーションは、Oracle、SQL Server、DB2 などのさまざまなデータベースをサポートする必要があります。データベースへのアクセスには Spring 3.0 と JDBCTemplate を使用します。クライアントの 1 つは、大文字と小文字を区別し、テーブル名を自動的に大文字にする SQL Server 2005 を使用しています。
明らかに、「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 を使用して大文字と小文字を区別しないクエリを実行する方法はありますか?