我只是想确认这是一个错误还是预期的行为。我正在使用如下所示的代码段:
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)") 的值设为空。我尝试调试代码,即使我可以在 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")));
}
我可以得到价值。请原谅这段代码中的任何语法错误,我不得不丢弃敏感信息,并且可能已经破坏了一些东西。但是,是的,代码确实编译了,这个示例代码是我问题的最佳代表。这里的软件是一个简单的类,有两个 String 成员,appName 和 description 由构造函数设置。我只能看到两个键之间的区别是括号。它应该不区分大小写,但我确实尝试了各种组合。