これがバグなのか、それとも予想される動作なのかを確認したかっただけです。次のようなコード セグメントを使用していました。
String sql = "select distinct wp.APP, max(wp.FUNCTIONALITY_DESCRIPTION) from test_table wp where wp.user = ?";
List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql, new Object[] {user});
for (Map<String, Object> row : rows) {
userSoftware.add(new Software((String) row.get("APP"), (String)row.get("MAX(WP.FUNCTIONALITY_DESCRIPTION)")));
}
row.get("MAX(WP.FUNCTIONALITY_DESCRIPTION)") の値を常に null として取得していることに気付きました。コードのデバッグを試みましたが、Eclipse デバッガーで Map の値を確認できましたが、get 関数呼び出しは常に null を返しました。
次に、代わりにこのコードセグメントを試しました:
String sql = "select distinct wp.APP, max(wp.FUNCTIONALITY_DESCRIPTION) func_desc from test_table wp where wp.user = ?";
List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql, new Object[] {user});
for (Map<String, Object> row : rows) {
userSoftware.add(new Software((String) row.get("APP"), (String)row.get("func_desc")));
}
そして価値を得ることができました。このコードの構文エラーはご容赦ください。機密情報を破棄する必要があり、何かが壊れている可能性があります。しかし、はい、コードはコンパイルされました。このサンプル コードは、私の問題を最もよく表しています。ここでのソフトウェアは、コンストラクターによって設定される appName と description という 2 つの String メンバーを持つ単純なクラスです。2 つのキーの違いはブラケットだけです。大文字と小文字を区別しないはずですが、さまざまな組み合わせで試しました。