Ява.математика.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>
вам не нужно делать бросок (долго)