如何将Array数据类型(H2数据库)转换为java List <long>?

时间:2018-06-25 22:24:59

标签: java sql h2

我尝试过

        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不能强制转换为java.lang.Long(异常与上面相同,但相反)

更多详细信息:H2数据库表中的数组数据类型具有BIGINT值

有什么解决办法吗?

1 个答案:

答案 0 :(得分:0)

这是因为您不能将Long强制转换为Integer。因为您使用的是对象数组,所以对象是整数。您需要告诉您的代码,您得到的对象是一个整数,如果您想转换为Long,则只需执行此操作。

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