0

Hibernate クエリ言語を使用して、1 つのクエリでテーブルから 2 つとテーブルから 2 つのフィールドを選択するDoctorような2つのテーブルがあるため、そのデータを表示する問題に直面しています。私は、リストを次のように変換するための1 つのカルスを書きました。shiftfieldsDoctorShiftbeanDoctorShiftList<DoctorShift>java.lang.ClassCastException

code is like this

Query qry="-----";//valid query

List<DoctorShift> list=(List<DoctorShift>)qry.list();
System.out.println(" Size of list is "+list.size());// i'm getting 2

DoctorShift ds=list.get(0);// here i'm getting Exception




qry="select s.shiftNameId,s.shiftName,d.doctorRegnumvar,"
      +"d.doctorFnamevar,d.doctorLnamevar,d.doctorstatus," 
      +"sm.shiftstatus,s.shiftTime from ShiftDaoBean s,"
      + "DoctorDaoBean d,DoctorShiftMappingBean sm where "
      +"d.doctorid=sm.doctoridfk and  s.shiftID=sm.shiftidfk"
      +" and d.doctorid=:doctorID ";

助けて...

前もって感謝します

4

2 に答える 2

0

それ以外の場合は、ResultTransformerを使用してBeanにデータをロードできます。このブログが役立つかもしれません

于 2013-02-28T14:56:30.377 に答える
0

2つの方法でやりたいことができると思います:

1) 必要なすべての引数を取る DoctorShift クラスでコンストラクターを作成し、HQL クエリでこのコンストラクターを使用してオブジェクトを作成します。

qry="select new com.yourpackage.DoctorShift(s.shiftNameId,s.shiftName,d.doctorRegnumvar,"
      +"d.doctorFnamevar,d.doctorLnamevar,d.doctorstatus," 
      +"sm.shiftstatus,s.shiftTime) from ShiftDaoBean s,"
      + "DoctorDaoBean d,DoctorShiftMappingBean sm where "
      +"d.doctorid=sm.doctoridfk and  s.shiftID=sm.shiftidfk"
      +" and d.doctorid=:doctorID ";

2) DoctorShifts オブジェクトのリストではなく、Object[] 配列のリストを取得します。各配列は、結果セットの行を表します。例えば:

Query qry="-----";//valid query

List<Object[]> list=(List<Object[]>)qry.list();
System.out.println(" Size of list is "+list.size());// i'm getting 2

Object[] firstRow =list.get(0);

System.out.println(firstRow[0]);// will output shiftNameId
System.out.println(firstRow[1]);// will output shiftName
...

2番目のケースでは、クエリは投稿したものと同じです。

于 2013-01-05T10:13:25.270 に答える