Как преобразовать тип массива (база данных H2) в список Java<Long>?

Я пробовал это

        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 (исключение, как указано выше, но наоборот)

Более подробная информация: тип данных Array имеет значения BIGINT в таблице базы данных H2

Какие-нибудь решения для этого?

1 ответ

Решение

Это потому, что вы не можете разыграть Long в Integer. Потому что вы используете массив объектов, и эти объекты являются целыми числами. Вы должны сообщить своему коду, что этот объект, который вы получаете, является целым числом, и если вы хотите привести к Long, вам нужно только сделать это.

Object[] idsArray = {new Integer(1)};
        List<Long> idsList = new ArrayList<>();
        for(Object obj : idsArray) {
            idsList.add(new Long((Integer) obj));
        }
Другие вопросы по тегам