Как преобразовать тип массива (база данных H2) в список Java <Long>? - PullRequest
0 голосов
/ 26 июня 2018

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

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

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

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

1 Ответ

0 голосов
/ 26 июня 2018

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

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