[英]How to resolve java.lang.ClassCastException: for query.list() in hibernate
我正在使用Hibernate執行select選項,Query正在執行但在query.list()
方法中獲得異常,
這是我的代碼,
String hql="select a.vehicleno, a.lat, a.lng, a.status, a.rdate, a.rtime from LatitudeBean a, VehicleRegisterBean b where a.vehicleno=b.vehicleno and b.clientid= :clientId and b.groupid in(select groupid from GroupDetails where groupname= :groupname and clientid= :gdclientId)"; // valid query
Query query =sessio.createQuery(hql);
List<LatitudeBean> groupList = (List<LatitudeBean>)query.list(); //Here I am getting exception
for(LatitudeBean arr : groupList){
System.out.println(arr.getVehicleno());
}
例外是,
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.aurodisplay.its.beans.LatitudeBean
at com.abc.its.controller.LoginController.doPost(LoginController.java:83)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
如何從list()
方法轉換列表返回。 任何人都可以幫助我。
問題是您的查詢不選擇實體,而只選擇實體的屬性。
因此,結果將不是實體列表,而是對象數組列表(哪些數組將保存所選屬性)。
嘗試這個:
List<Object[]> groupList = (List<Object[]>) query.list();
for(Object[] arr : groupList) {
System.out.println("vehicleno: " + arr[0]);
}
或者,如果要選擇整個實體,請按以下方式修改查詢:
String hql = "select a from LatitudeBean a, VehicleRegisterBean b where ...";
這樣你的原始代碼就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.