Как преобразовать тип массива (база данных 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));
}