0

Hibernateプログラムを作成し、クエリを記述したところ、次のエラーが発生しました。

例外が発生しましたjava.lang.ClassCastException: java.lang.Double

String qry="Select Distinct (s2Taxper) from S2 where s2Tc='601' AND s2Txcd!=''";
Iterator atItr2=hbSession.createQuery(qry).iterate();
String qry1="Select ahCode,ahName,ahRcNumber,ahCentralSalesTaxNumber From AccountHeader ORDER    BY  ahName ASC";

Iterator atItr1=hbSession.createQuery(qry1).iterate();

mainBean=new VatMainBean();

VatSubBeanList=new ArrayList<VatSubBean>();

while(atItr1.hasNext()){
    subBean=new VatSubBean();

    Object[] obj1=(Object[])atItr1.next();

    String ahCode  =(String)obj1[0];                                         
    String ahName  =(String)obj1[1];                                         
    String ahRcNumber=(String)obj1[2];                                        
    String ahCentralSalesTaxNumber=(String)obj1[3];

    if("v".equalsIgnoreCase(type)){
        if(ahRcNumber!=null&&!"".equalsIgnoreCase(ahRcNumber)){
            if(ahRcNumber.indexOf("/")<0&&ahRcNumber.indexOf(":")<0&&ahRcNumber.indexOf(" ")<0){
                //buyersTinNo.trim();
                if(ahRcNumber.length()==11){
                    buyersTinNo=ahRcNumber;
                }
            }
        }
    }
    else{
        if(ahCentralSalesTaxNumber!=null&&!"".equalsIgnoreCase(ahCentralSalesTaxNumber)){
            buyersTinNo=ahCentralSalesTaxNumber;
        }
    }

    DoubleCheck doubleObj1=new DoubleCheck();

    List<String> taxPerList=new ArrayList<String>(); 

    int i = 0;
    while (atItr2.hasNext()){
        Object[] obj2=(Object[])atItr2.next();// error is shown here

        String s2Taxper=(String)obj2[0];

        int s1Docno=(Integer)obj2[1];

        if(Double.parseDouble(s2Taxper)>0){
            taxPerList.add(s2Taxper);
        }

これを修正するにはどうすればよいですか?

4

2 に答える 2

0

ファイルの1つがdoubleであり、それを文字列にキャストしようとします。カラムの定義を見てください。doubleを文字列に変換する場合は、Double.tostringでこれを行う必要があります

于 2012-08-18T07:01:58.140 に答える
0

あなたのコードを見て...

String qry="Select Distinct (s2Taxper) from S2 where s2Tc='601' AND s2Txcd!=''";
// ....
Iterator atItr2=hbSession.createQuery(qry).iterate();
// ....
while (atItr2.hasNext()){
    Object[] obj2=(Object[])atItr2.next();// error is shown here
}

あなたがキャストしようとしているものObject[]が基本的にaS2であり、したがってエラーであることは明らかです。

于 2012-08-18T07:06:59.890 に答える