gpt4 book ai didi

java - 将 List 对象强制转换为 List Long

转载 作者:行者123 更新时间:2023-12-01 22:45:32 24 4
gpt4 key购买 nike

我有一个问题,无法将对象列表转换为数字列表

public List<Long> sommeClassesRep(Choix choix) {

Query q1xx = em.createQuery("SELECT SUM(h.nb1xx), SUM(h.nb2xx),SUM(h.nb3xx),SUM(h.nb4xx),SUM(h.nb5xx) FROM HttpEntity h WHERE h.host = :host and h.date_http BETWEEN to_date(:startDate,'dd/mm/yyyy HH24:mi:ss') AND to_date(:endDate,'dd/mm/yyyy HH24:mi:ss')");

q1xx.setParameter("host",choix.getHost() );
q1xx.setParameter("startDate", convert.convertDateTime(choix.getStartdate()) );
q1xx.setParameter("endDate", convert.convertDateTime(choix.getEndDate()));

List<BigDecimal[]> listSomme = new ArrayList<BigDecimal[]>();
listSomme = (List<BigDecimal[]>) q1xx.getResultList();

List<Long> listSomme = (List<Long>) q1xx.getResultList();
List<Long> listResultat = new ArrayList<Long>();

for (BigDecimal[] obj: listSomme ){

listResultat.add(( obj[0]).longValue());
listResultat.add(( obj[1]).longValue());
listResultat.add(( obj[2]).longValue());
listResultat.add(( obj[3]).longValue());
listResultat.add(( obj[4]).longValue());
}

return listResultat;

}

当我调试时,我在列表的第一个单元格中显示查询的结果,但出现严重错误,无法将对象转换为数字

请帮忙谢谢

最佳答案

解决方案是这样的:

public List<Long> sommeClassesRep(Choix choix) {

Query q1xx = em.createQuery("SELECT SUM(h.nb1xx), SUM(h.nb2xx),SUM(h.nb3xx),SUM(h.nb4xx),SUM(h.nb5xx) FROM HttpEntity h WHERE h.host = :host and h.date_http BETWEEN to_date(:startDate,'dd/mm/yyyy HH24:mi:ss') AND to_date(:endDate,'dd/mm/yyyy HH24:mi:ss')");

q1xx.setParameter("host",choix.getHost() );
q1xx.setParameter("startDate", convert.convertDateTime(choix.getStartdate()) );
q1xx.setParameter("endDate", convert.convertDateTime(choix.getEndDate()));

Object[] listSomme = (Object[]) q1xx.getSingleResult();

Long[] longArr = Arrays.copyOf(listSomme, listSomme.length, Long[].class);
List<Long> listResultat = Arrays.asList(longArr);

return listResultat;
}

说明:

在开始之前,我不知道每个值声明的是什么类型:nb1xx、nb2xx、nb3xx、nb4xx、nb5xx。因此,为了便于解释,我假设所有这些都被声明为 Long

我从 q1xx.getResultList 更改为 q1xx.getSingleResult 因为您的查询将仅返回一行。该行将是一个对象数组,因此我将 listSomme 定义为 Object[]

当你想返回一个Long列表时,可以将Object数组创建一个Long数组的副本(假设它们都是Long类型),然后将数组转换为列表。

如果总和不是Long类型(比如说BigDecimal),那么你可以这样做:

Object[] listSomme = (Object[]) q1xx.getSingleResult();

List<Long> listResultat = new ArrayList<Long>();
listResultat.add(((BigDecimal)listSomme[0]).longValue());
listResultat.add(((BigDecimal)listSomme[1]).longValue());
listResultat.add(((BigDecimal)listSomme[2]).longValue());
listResultat.add(((BigDecimal)listSomme[3]).longValue());
listResultat.add(((BigDecimal)listSomme[4]).longValue());

return listResultat;

关于java - 将 List 对象强制转换为 List Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25434550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com