Ява.математика.BigInteger не может быть приведен к java.ленг.Длинный
у меня есть List<Long> dynamics. И я хочу получить максимальный результат, используя Collections. Вот мой код:
List<Long> dynamics=spyPathService.getDynamics();
Long max=((Long)Collections.max(dynamics)).longValue();
это мой getDynamics:
public List<Long> getDynamics() {
Session session = null;
session = this.sessionFactory.getCurrentSession();
Query query = session
.createSQLQuery("SELECT COUNT(*) FROM SpyPath WHERE DATE(time)>=DATE_SUB(CURDATE(),INTERVAL 6 DAY) GROUP BY DATE(time) ORDER BY time;");
List<Long> result = query.list();
return result;
}
Я java.math.BigInteger cannot be cast to java.lang.Long. Что случилось? 7 ответов
ваша ошибка может быть в этой строке:
List<Long> result = query.list();
где запрос.list () возвращает список BigInteger вместо длинного списка. Попробуйте изменить его на.
List<BigInteger> result = query.list();
лучший вариант-это использовать SQLQuery#addScalar по сравнению с литьем в Long или BigDecimal.
здесь изменен запрос, который возвращает
попробуйте преобразовать BigInteger в длинный, как это
Long longNumber= bigIntegerNumber.longValue();
мне не хватает контекста, но это работает просто отлично:
List<BigInteger> nums = new ArrayList<BigInteger>();
Long max = Collections.max(nums).longValue(); // from BigInteger to Long...
вам нужно добавить псевдоним для count в ваш запрос, а затем использовать addScalar() метод по умолчанию для list() метод в Спящих швах должен быть BigInteger для числовых типов в SQL. Вот пример:
List<Long> sqlResult = session.createSQLQuery("SELECT column AS num FROM table")
.addScalar("num", StandardBasicTypes.LONG).list();
вы уверены, что динамика-это List<Long>, а не List<BigInteger> ?
Если динамика List<Long> вам не нужно делать бросок (долго)