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