Spring namedjdbctemplate queryForMap заполняет HashMap значением EnumMap - PullRequest
0 голосов
/ 23 января 2020

Я ищу помощь в следующем. Скажем, у меня есть следующие записи, возвращенные базой данных:

date        status              groupStatus     count

2020-01-01  ACC                 Accepted        3
2020-01-22  RJCT                Rejected        47
2020-01-22  NM                  Other           1
2020-01-23  NIY                 Failed          55

У меня есть следующий метод в моем Java классе хранилища базы данных, где я использую Spring NamedJdbcTemplate:

public Map<LocalDate, EnumMap<Status, Integer>> status(final Request searchCriteria) {
    Map<LocalDate, EnumMap<Status, Integer>> statusMap = new HashMap<>();
    return this.namedParameterJdbcTemplate.queryForMap() //incomplete
}

Как заполнить карту statusMap с помощью вызова queryForMap()?

Status - это перечисление, в котором текст соответствует выводу текста столбца groupStatus, возвращаемого базой данных.

public enum Status{

    ACCEPTED("Accepted"),
    REJECTED("Rejected"),
    OTHER("Other"),
    FAILED("Failed");

    private final String text;

    Status (final String text) {
        this.text = text;
    }
}

Моя попытка, когда я пытаюсь заполнить EnumMap, используя значения Status Enum:

            return this.namedParameterJdbcTemplate.query(this.QUERY,
            new MapSqlParameterSource()
                    .addValue("date", searchCriteria.getDate())
            new ResultSetExtractor<Map<LocalDate, EnumMap<Status, Integer>>>() {
                @Override
                public Map<LocalDate, EnumMap<Status, Integer>> extractData(ResultSet rs) throws SQLException, DataAccessException {
                    Map<LocalDate, EnumMap<Status, Integer>> statusMap = new HashMap<>();
                    while (rs.next()) {

                        statusMap.put(rs.getDate("date").toLocalDate(), )
                    }
                }
            }
    );

ПРИМЕЧАНИЕ. Мне также нужны дубликаты ключей, поскольку дата является ключом.

...