【问题标题】:How to convert Array datatype(H2 database) to java List<Long>?如何将 Array 数据类型(H2 数据库)转换为 java List<Long>?
【发布时间】:2018-06-25 22:24:58
【问题描述】:

我试过了

        Array a = resultSet.getArray("IDS");
        Object[] idsArray = (Object[]) a.getArray();

        List<Long> idsList = new ArrayList<>();
        for(Object obj : idsArray) {
            idsList.add((Long) obj);   -----> (java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer)
        }

它正在抛出异常。然后,如果我将列表更改为 Integer 并强制转换为 Integer,则会抛出 java.lang.Integer cannot be cast to java.lang.Long(异常如上但相反)

更多详情:数组数据类型在 H2 数据库表中具有 BIGINT 值

有什么解决办法吗?

【问题讨论】:

    标签: java sql h2


    【解决方案1】:

    这是因为您不能将 Long 转换为 Integer。因为您使用的是对象数组并且对象是整数。你需要告诉你的代码你得到的 Object 是一个 Integer ,如果你想转换为 Long 你只需要这样做。

    Object[] idsArray = {new Integer(1)};
            List<Long> idsList = new ArrayList<>();
            for(Object obj : idsArray) {
                idsList.add(new Long((Integer) obj));
            }
    

    【讨论】:

    • 相同的代码但有流:Arrays.stream(idsArray).collect(Collectors.toList())
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多