Не удается получить тип данных Float из NamedParameterJdbcTemplate - PullRequest
0 голосов
/ 25 апреля 2020

Мне просто нужно получить одно значение типа Float. В базе данных PostgreSQL это поле имеет тип real. Буду благодарен)

`public Float getPlayerRatingValue(Integer idClub, Integer idPlayer) {
        MapSqlParameterSource parameters = new MapSqlParameterSource();
        parameters.addValue("idClub", idClub);
        parameters.addValue("idPlayer", idPlayer);
        parameters.addValue("zeroRating", ZERO_RATING);
        return namedParameterJdbcTemplate
                .queryForObject(
                        "SELECT rating_value " +
                                "FROM rating " +
                                "WHERE id_club = :idClub AND id_player = :idPlayer",
                        parameters,
                        new BeanPropertyRowMapper<>(Float.class)
                );`

1 Ответ

0 голосов
/ 25 апреля 2020

NamedParameterJdbcTemplate имеет специальный метод для запросов на одну строку / столбец.

Таким образом, вы можете просто передать Float.class в качестве третьего параметра:

return namedParameterJdbcTemplate
        .queryForObject(
                "SELECT rating_value " +
                        "FROM rating " +
                        "WHERE id_club = :idClub AND id_player = :idPlayer",
                parameters,
                Float.class
        );

Еще один быстрый пример:

MapSqlParameterSource parameterSource = new MapSqlParameterSource();
Float f = jdbcTemplate.queryForObject("SELECT CAST(1 AS REAL)", parameterSource, Float.class);
System.out.println(f);
...