![](/img/trans.png)
[英]how to solve java.lang.ClassCastException: java.math.BigDecimal cannot be cast to [Ljava.lang.Object; in java
[英]How to resolve exception java.lang.ClassCastException: java.math.BigDecimal cannot be cast to [Ljava.lang.Object; in java
在我的代碼中, query
工作正常,但在迭代時會引發此錯誤。
我的代碼在這里:
Session session = null;
try{
Query qu=session.createSQLQuery("select plot_no from house_details where type='duplex'");
List<Long> li = qu.list();
System.out.println("---li---"+li.toString());
for (Iterator itr = li.iterator(); itr.hasNext();) {
String plotNo = itr.next().toString();
if(plotNo.equals("501") || plotNo.equals("520") || plotNo.equals("601"){
System.out.println("---if---");
//code here
}
else{
System.out.println("---else---");
Query qu1 = session.createSQLQuery("select distinct name,houseno from house_details");
List li1 = qu1.list();
for (Iterator itr1 = li.iterator(); itr1.hasNext();) {
Object[] obj = (Object[]) itr1.next();
String houseName = (String) obj[0];
String houseNo = (String) obj[1];
System.out.println("---houseName--->"+houseName);
}
}
}catch(Exception e){
e.printStackTrace();
}finally {
if(session!=null){
session.close();
}
}
輸出:
---li---[501, 0, 101, 101, 114]
---else---
java.lang.ClassCastException: java.math.BigDecimal cannot be cast to [Ljava.lang.Object;
它在Object[] obj = (Object[]) itr1.next();
顯示錯誤Object[] obj = (Object[]) itr1.next();
線。
我的代碼有什么問題?
正如錯誤所說:不能將單個 BigDecimal 轉換為對象數組。 您有錯誤的列表需要迭代:li <> li1。 將for (Iterator itr1 = li.iterator(); itr1.hasNext();) {
更改為 for (Iterator itr1 = li1.iterator(); itr1.hasNext();) {
然后它應該可以工作。
首先,轉換:您將列表li
上的迭代器視為數組列表上的迭代器,而實際上它是BigDecimal
列表上的迭代器。 它的li1
,你應該是迭代:
for (Iterator itr1 = li1.iterator() ; itr1.hasNext() ; )
// ^
另一個錯誤發生在早期:
List<Long> li = qu.list();
它應該是
List<BigDecimal> li = qu.list();
因為查詢返回的列表中的對象是BigDecimal
類型,正如失敗的演員所確認的那樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.