gpt4 book ai didi

java - [Ljava.lang.Object;不能转换为错误

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:01 25 4
gpt4 key购买 nike

我从我的 query.list() 中得到一个列表。之后,我想在此列表中显示对象,但此行出现此错误 for(Commerce[] c: this.newsList) {

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lcom.model.Commerce; com.action.CommerceAction.searchCommerces(CommerceAction.java:35)

这是我的代码:

我的企业服务

public List<Commerce[]> getCommercesBySearch(String categorie, String lieux) {
Query query = hibUtil.getSession().createQuery("from Commerce c, Categorie ca,Lieux l "
+ "where c.categorie=ca.idCategorie and c.lieux=l.idLieux and"
+ " ca.libelle='" + categorie + "' and l.ville='" + lieux + "' ");
List<Commerce[]> tuples = (List<Commerce[]>) query.list();
return tuples;
}

我的 Action 类

private CommerceService service;
private Commerce commerce = new Commerce();
private List<Commerce[]> newsList;
public String searchCommerces() {
String libelle = ServletActionContext.getRequest().getParameter("libelle");
String ville = ServletActionContext.getRequest().getParameter("ville");
this.newsList = service.getCommercesBySearch(libelle,ville);
for(Commerce[] c: this.newsList){
System.out.println(c[0].getNom());
}
if (this.newsList.size() > 0) {
return SUCCESS;
}
addActionError("Il n'existe aucun commerce de cette catégorie dans cette ville");
return ERROR;
}

最佳答案

我确信这个声明:

List<Commerce[]> tuples = (List<Commerce[]>) query.list();

产生未经检查的类型转换警告。 您的密码是polluting the heap通过执行此未经检查的类型转换。 query.list()返回原始 List ,其中将包含 Object[] .这是 relevant Hibernate documentation :

Return the query results as a List. If the query contains multiple results per row, the results are returned in an instance of Object[].

Note that you cannot cast an array to an array of it's sub-type.

有几种方法可以解决这个问题:

  1. 使用List<Object[]>而不是 List<Commerce[]> .然后您可以转换 list() 的结果将方法转换为更有用的形式,最好是在它自己的方法中,然后再将其传递给代码的其余部分。如果您需要选择的不仅仅是 Commerce,这是更好的方法。对象。
  2. 添加SELECT c到查询的开头,这将使您能够安全地 List<Commerce> Actor 。

关于java - [Ljava.lang.Object;不能转换为错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29372228/

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