Hibernate中的java.lang.ClassCastException
我有两个表,比如Hibernate中的java.lang.ClassCastException,java,hibernate,jakarta-ee,exception,object,Java,Hibernate,Jakarta Ee,Exception,Object,我有两个表,比如Doctor和shift,通过Hibernate查询语言,我从Doctor表中选择了两个字段,在单个查询中从shift表中选择了两个字段 所以我面临一个显示数据的问题。 我为此编写了一个beancals,比如DoctorShift将列表转换为list我得到了java.lang.ClassCastException,那么该怎么办呢 给同样的想法 code is like this Query qry="-----";//valid query List<DoctorShi
Doctor
和shift
,通过Hibernate查询语言,我从Doctor
表中选择了两个字段,在单个查询中从shift
表中选择了两个字段
所以我面临一个显示数据的问题。
我为此编写了一个bean
cals,比如DoctorShift
将列表转换为list
我得到了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 ";
代码是这样的
查询qry=“----”//有效查询
List=(List)qry.List();
System.out.println(“列表大小为”+list.Size());//我得了2分
DoctorShift ds=list.get(0);//我这里有个例外
qry=“选择s.shiftNameId、s.shiftName、d.doctorRegnumvar,”
+“d.doctorFnamevar,d.DoctorNamevar,d.doctorstatus,”
+“sm.shiftstatus,s.shiftTime来自ShiftDaoBean s,”
+DoctorDaoBean d,DoctorShiftMappingBean sm其中
+“d.doctorid=sm.doctoridfk和s.shiftID=sm.shiftidfk”
+“和d.doctorid=:doctorid”;
帮帮我
提前感谢我想你可以通过两种方式做你想做的事:
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) 获取对象[]数组的列表,而不是doctorshift对象的列表。每个数组将表示结果集中的行。例如:
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
...
Query qry=“------”//有效查询
List=(List)qry.List();
System.out.println(“列表大小为”+list.Size());//我得了2分
Object[]firstRow=list.get(0);
System.out.println(第一行[0]);//将输出shiftNameId
System.out.println(第一行[1]);//将输出shiftName
...
在第二种情况下,您的查询仍然与您发布的相同。否则您可以使用ResultTransformer在bean中加载数据。可能会有帮助你能展示你的注释类吗?事实上,我不会在任何地方配置DoctorShift类。如果需要,请告诉我怎么做。。