侧边栏壁纸
博主头像
宁静致远博主等级

行动起来,活在当下

  • 累计撰写 14 篇文章
  • 累计创建 11 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Jackson序列化oracle.sql.TIMESTAMP失败

Administrator
2024-04-09 / 0 评论 / 0 点赞 / 3 阅读 / 3406 字

Jackson序列化oracle.sql.TIMESTAMP失败

记-jackson oracle.sql.TIMESTAMP 序列化失败

文章目录

一、错误信息

jdbc原生查询final PreparedStatement statement = connection.prepareStatement(sql);返回map结果,无法序列化到前端页面。

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.io.ByteArrayInputStream and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.example.common.response.bean.Result["data"]->java.util.HashMap["data"]->java.util.ArrayList[0]->java.util.HashMap["CREATE_TIME"]->oracle.sql.TIMESTAMP["stream"])
1

二、数据预览代码

 public Map<String, Object> previewData(String sql) throws SQLException {
        Map<String, Object> result = new HashMap(16);
        List<Map<String, Object>> list = new ArrayList<>();
        try (final Connection connection = dataSource.getConnection()) {
            final PreparedStatement statement = connection.prepareStatement(sql);
            final ResultSetMetaData metaData = statement.getMetaData();
            final int columnCount = metaData.getColumnCount();
            final String[] columns = new String[columnCount];
            for (int i = 0; i < columnCount; i++) {
                columns[i] = metaData.getColumnLabel(i+1);
            }
            result.put("column", columns);
            try (final ResultSet rs = statement.executeQuery()) {
                int rowIndex = 0;
                int limit = 10;
                while (rs.next() &&  rowIndex < limit) {
                    final Map<String, Object> map = new HashMap<>(16);
                    for (int j = 0; j < columnCount; j++) {
                        final String columnLabel = columns[j];
                        final Object object = rs.getObject(columnLabel);
                        map.put(columnLabel, object);
                    }
                    list.add(map);
                    rowIndex++;
                }
            }
            result.put("data", list);
        } catch (SQLException e) {
            LOGGER.error("SQL执行异常=>{}", e);
        }

        return result;
    }
123456789101112131415161718192021222324252627282930313233

三、解决办法

oracle.jdbc.J2EE13Compliant设置为true(推荐)

System.setProperty("oracle.jdbc.J2EE13Compliant", "true");

0

评论区