无法强制转换为[Ljava.lang.Object;

无法强制转换为[Ljava.lang.Object;,java,swing,object,derby,Java,Swing,Object,Derby,我写这段代码是为了将jTable设置为一个模型,以适应查询返回的数据。我不知道为什么会发生这种情况,但我确实有一个使用相同代码的示例,它工作得非常完美。 注意:查询从链接到另一个表的表中调用记录。 注意:有些人可能会说这是一个重复的问题,但我觉得这不是因为我问了这个问题,没有任何解决方案对我有帮助,我尝试使用迭代器,但同样的错误发生了。 任何建议 这是密码 public void createModelsAndEquipmentTableModel(){ Query query

我写这段代码是为了将jTable设置为一个模型,以适应查询返回的数据。我不知道为什么会发生这种情况,但我确实有一个使用相同代码的示例,它工作得非常完美。 注意:查询从链接到另一个表的表中调用记录。 注意:有些人可能会说这是一个重复的问题,但我觉得这不是因为我问了这个问题,没有任何解决方案对我有帮助,我尝试使用迭代器,但同样的错误发生了。 任何建议

这是密码

public void createModelsAndEquipmentTableModel(){
        Query query = FinancialDBPUEntityManager.createQuery("SELECT t FROM Stocktbl t WHERE t.chemical = FALSE");
        List<Object[]> results = query.getResultList();
        String headings[] = {"Product ID", "Product Name", "Number In Stock", "Number Needs Replacing"};
        Object data[][] = new Object[results.size()][headings.length];
        int index = 0;
        for(Object[] obj: results){// error occurs here.
            data[index++] = obj;
        }
        DefaultTableModel model = new DefaultTableModel(data, headings);
        tblquipment.setModel(model);
    }
public void createModelsAndEquipmentTableModel(){
Query Query=financialDBupentityManager.createQuery(“从Stocktbl t中选择t,其中t.chemical=FALSE”);
List results=query.getResultList();
字符串标题[]={“产品ID”、“产品名称”、“库存编号”、“编号需要替换”};
对象数据[][]=新对象[results.size()][headers.length];
int指数=0;
对于(Object[]obj:results){//此处发生错误。
数据[index++]=obj;
}
DefaultTableModel=新的DefaultTableModel(数据、标题);
TBL设备设置模型(模型);
}
这是堆栈跟踪的相关部分:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: GUIPac.Stocktbl cannot be cast to [Ljava.lang.Object;
    at GUIPac.ViewStockInfo.createChemicalsTableModel(ViewStockInfo.java:53)
    at GUIPac.ViewStockInfo.<init>(ViewStockInfo.java:30)
线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常:无法将GUIPac.Stocktbl转换为[Ljava.lang.Object;
在GUIPac.ViewStockInfo.createChemicalsTableModel(ViewStockInfo.java:53)上
在GUIPac.ViewStockInfo.(ViewStockInfo.java:30)
getResultList()-方法获取
列表的列表
而不是
对象[]

在运行时没有泛型。但是当您对它进行迭代时,强制转换失败。

方法获取
列表的列表,而不是
对象[]

在运行时没有泛型。但当您对其进行迭代时,转换失败。

查询
“从Stocktbl t中选择t,其中t.chemical=FALSE”
将返回
Stocktbl
对象。 当迭代ResultList时,这会导致ClassCastException

我建议使用以下createQuery方法:

    TypedQuery<Stocktbl> query = FinancialDBPUEntityManager.createQuery("SELECT t FROM Stocktbl t WHERE t.chemical = FALSE", Stocktbl.class);
请更改
Stocktbl stock
的字段名,以适合您的
Stocktbl
类查询
“从Stocktbl t中选择t,其中t.chemical=FALSE”
将返回
Stocktbl
对象。 当迭代ResultList时,这会导致ClassCastException

我建议使用以下createQuery方法:

    TypedQuery<Stocktbl> query = FinancialDBPUEntityManager.createQuery("SELECT t FROM Stocktbl t WHERE t.chemical = FALSE", Stocktbl.class);

请更改
Stocktbl stock
的字段名,以适合您的
Stocktbl

是编译时还是运行时错误…
query.getResultList()的返回类型是什么运行时错误,返回类型是List,但错误发生在for each循环中。只有
List
?没有泛型类型?那么您如何知道此列表包含
Object[]
而没有其他内容?您检查过吗?嗯,异常消息非常明显(如果您有编程经验的话),方法
getResultList()
返回
GUIPac.Stocktbl
List
,而不是
Object[]
。如果需要
Object[]
,则需要手动转换类型。就像Slartidan的回答一样。这是编译时错误还是运行时错误?
query.getResultList()的返回类型是什么运行时错误,返回类型是List,但错误发生在for each循环中。只有
List
?没有泛型类型?那么您如何知道此列表包含
Object[]
而没有其他内容?您检查过吗?嗯,异常消息非常明显(如果您有编程经验的话),方法
getResultList()
返回
GUIPac.Stocktbl
List
,而不是
Object[]
。如果您想改为
Object[]
,则需要手动转换类型。就像Slartidan的回答一样。对于TypedQuery捕获:)+1这没有帮助。我需要将结果列表转换为对象[],以便为jTable准备数据。对于TypedQuery捕获:)+1这没有帮助。我需要将结果列表强制转换为对象[],以便为jTable准备数据。