Как привязать метку времени в Long с помощью RowMapper? - PullRequest
1 голос
/ 22 марта 2020

Ниже кода в jdb c Исключитель, выдающий строку,

Spring Boot Code:

@Override
public List<CTEvent> findAll() {

    return jdbcTemplate.query( "select * from events", (rs, rowNum) ->
        new CTEvent(
                rs.getLong("event_id"),
                rs.getLong("user_id"),
                rs.getFloat("event_lat"),
                rs.getFloat("event_lon"),
                rs.getFloat("event_alt"),
                rs.getLong("event_time")
        )
    );
}

Фактический тип event_time равен TIMESTAMP

Исключение:

com.mysql.cj.exceptions.DataConversionException: Unsupported conversion from TIMESTAMP to java.lang.Long
    at com.mysql.cj.result.DefaultValueFactory.unsupported(DefaultValueFactory.java:70) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.result.DefaultValueFactory.createFromTimestamp(DefaultValueFactory.java:82) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.protocol.a.MysqlTextValueDecoder.decodeTimestamp(MysqlTextValueDecoder.java:81) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.protocol.result.AbstractResultsetRow.decodeAndCreateReturnValue(AbstractResultsetRow.java:87) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.protocol.result.AbstractResultsetRow.getValueFromBytes(AbstractResultsetRow.java:241) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.protocol.a.result.ByteArrayRow.getValue(ByteArrayRow.java:91) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.jdbc.result.ResultSetImpl.getObject(ResultSetImpl.java:1290) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.jdbc.result.ResultSetImpl.getLong(ResultSetImpl.java:812) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.jdbc.result.ResultSetImpl.getLong(ResultSetImpl.java:818) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.zaxxer.hikari.pool.HikariProxyResultSet.getLong(HikariProxyResultSet.java) ~[HikariCP-3.4.2.jar:na]
    at com.ctracker.server.data.JdbcEventRepository.lambda$0(JdbcEventRepository.java:33) ~[main/:na]
    at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:94) ~[spring-jdbc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
    at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:61) ~[spring-jdbc-5.2.4.RELEASE.jar:5.2.4.RELEASE]

Как мне избавиться от этого исключения?

1 Ответ

1 голос
/ 22 марта 2020

Вы можете получить его как java.sql.Timestamp, а затем преобразовать в long:

rs.getTimestamp("event_time").getTime()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...