如何使用RowMapper将时间戳绑定为Long?

问题描述 投票:0回答:1

下面的JDBC行映射器中的代码产生异常,

春季启动代码:

@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]

我如何摆脱这个例外?

mysql spring-boot jdbc timestamp jdbctemplate
1个回答
0
投票

您可以将其作为java.sql.Timestamp获得,然后将其转换为java.sql.Timestamp

© www.soinside.com 2019 - 2024. All rights reserved.