-2

私はモデルクラスを持っています:

public class RecordSet {
    private DateRange daterange;
    private Master master;
    public DateRange getDaterange() {
        return daterange;
    }
    public void setDaterange(DateRange daterange) {
        this.daterange = daterange;
    }
    public Master getMaster() {
        return master;
    }
    public void setMaster(Master master) {
        this.master = master;
    }
}


public class DateRange {
    private Date ddate;

    public Date getDdate() {
        return ddate;
    }

    public void setDdate(Date ddate) {
        this.ddate = ddate;
    }

}

public class Master  {

    private String empcode;
    private String empname;
    private String dept;


    public String getEmpcode() {
        return empcode;
    }
    public void setEmpcode(String empcode) {
        this.empcode = empcode;
    }
    public String getEmpname() {
        return empname;
    }
    public void setEmpname(String empname) {
        this.empname = empname;
    }
    public String getDept() {
        return dept;
    }
    public void setDept(String dept) {
        this.dept = dept;
    }

}

私はこのような声明を持っています

List<RecordSet> list = (List<RecordSet>) query.list();

上記のステートメントが実行されると、オブジェクトのリストが取得され、各オブジェクトは2つのアイテム(Master、DateRange)を保持しますか?

誰でもできますかこれらの2つのモデルクラスオブジェクトを取得するにはどうすればよいですか

私は試しましたが、クラスキャストの例外に直面しています:

List<RecordSet> list = (List<RecordSet>) query.list();
            for(int i=0;i<list.size(); i++){
                Object set=list.get(i);
                Master masetr=(Master)set;

                System.out.println(masetr);
                }

ありがとう

4

3 に答える 3

1
You can't cast them if they are not realted .

キャストするオブジェクトのクラスとキャスト先のクラスは、継承によって関連付けられている必要があります。つまり、オブジェクトはそのクラスのサブクラスまたはスーパークラスのインスタンスにのみキャストでき、ランダムなクラスにはキャストできません。

Side note: クラス階層の下向きのキャストは自動的に行われますが、上向きのキャストは自動ではありません。

于 2013-02-02T06:22:56.080 に答える
0

このようにしてみてください:

List<Object> list = query.list();
for(Object obj:list){
   RecordSet rs = (RecordSet)obj;
   Master ms = rs.getMaster();
   System.out.println(ms.getEmpCode()); //all things you need to print
}
于 2013-02-02T06:19:26.950 に答える
0

次のようなことを試してください:

for (Object obj : query.getResultList()) {
    Object[] objArray = (Object[]) obj;
    Master ms = new Master();
    ms.setxxxx(objArray[0].toString());
    ms.setxxxx(objArray[1].toString());
    list.add(ms);
于 2013-02-02T06:29:26.393 に答える